[PATCH v2 0/7] Detailed test coverage reports for Git
From: Ævar Arnfjörð Bjarmason <hidden>
Date: 2016-06-15 22:49:11
This is v2 of the test coverage series. It addresses all the points
that were raised for v1. Here's the diffstat against v1:
.gitignore | 15 +++------------
Makefile | 19 +++++++++----------
t/README | 21 ++++++++++++++++-----
3 files changed, 28 insertions(+), 27 deletions(-)
And the diff since v2:
diff --git a/.gitignore b/.gitignore
index e02f1f9..baed247 100644
--- a/.gitignore
+++ b/.gitignore
@@ -207,12 +207,3 @@
-/*.gcda
-/*.gcno
-/*.gcov
-/builtin/*.gcda
-/builtin/*.gcno
-/builtin/*.gcov
-/xdiff/*.gcda
-/xdiff/*.gcno
-/xdiff/*.gcov
-/compat/*.gcda
-/compat/*.gcno
-/compat/*.gcov
+*.gcda
+*.gcno
+*.gcov
diff --git a/Makefile b/Makefile
index c35c348..b6975aa 100644
--- a/Makefile
+++ b/Makefile
@@ -2282,0 +2283 @@ coverage:
+object_dirs := $(sort $(dir $(OBJECTS)))
@@ -2284,4 +2285,3 @@ coverage-clean:
- $(RM) *.gcov *.gcda *.gcno
- $(RM) builtin/*.gcov
- $(RM) builtin/*.gcda
- $(RM) builtin/*.gcno
+ $(RM) $(addsuffix *.gcov,$(object_dirs))
+ $(RM) $(addsuffix *.gcda,$(object_dirs))
+ $(RM) $(addsuffix *.gcno,$(object_dirs))
@@ -2298,4 +2298,3 @@ coverage-report:
- gcov -b *.c
- gcov -b -o builtin builtin/*.c
- gcov -b -o xdiff xdiff/*.c
- gcov -b -o compat compat/*.c
+ for dir in $(object_dirs); do \
+ gcov --preserve-paths --branch-probabilities --all-blocks --object-directory=$$dir $$dir*.c; \
+ done
@@ -2303 +2302 @@ coverage-report:
-coverage-report-untested-functions:
+coverage-untested-functions: coverage-report
@@ -2308 +2307 @@ coverage-report-untested-functions:
-coverage-report-cover-db:
+coverage-report-cover-db: coverage-report
diff --git a/t/README b/t/README
index 718f35d..400e2da 100644
--- a/t/README
+++ b/t/README
@@ -273,0 +274,9 @@ Do:
+ Don't blindly follow test coverage metrics, they're a good way to
+ spot if you've missed something. If a new function you added
+ doesn't have any coverage you're probably doing something wrong,
+ but having 100% coverage doesn't necessarily mean that you tested
+ everything.
+
+ Tests that are likely to smoke out future regressions are better
+ than tests that just inflate the coverage metrics.
+
@@ -518,3 +527,5 @@ Test coverage
-You can use the coverage tests to find out if your tests are really
-testing your code code. To do that, run the coverage target at the
-top-level (not in the t/ directory):
+You can use the coverage tests to find code paths that are not being
+used or properly exercised yet.
+
+To do that, run the coverage target at the top-level (not in the t/
+directory):
@@ -532 +543 @@ functions:
- make coverage-report-untested-functions
+ make coverage-untested-functions
@@ -537 +548 @@ Devel::Cover module. To install it do:
- # On Debian:
+ # On Debian or Ubuntu:
I also rewrote some of the commit messages.
Ævar Arnfjörð Bjarmason (7):
gitignore: Ignore files generated by "make coverage"
Makefile: Include subdirectories in "make cover" reports
Makefile: Split out the untested functions target
Makefile: Add coverage-report-cover-db target
Makefile: Add coverage-report-cover-db-html target
t/README: A new section about test coverage
t/README: Add a note about the dangers of coverage chasing
.gitignore | 6 ++++++
Makefile | 17 +++++++++++++++--
t/README | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 72 insertions(+), 2 deletions(-)