git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v3 6/7] t/README: A new section about test coverage

From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date
Jul 25, 2010, 19:52 UTC
Message-ID
<1280087565-24671-7-git-send-email-avarab@gmail.com>
In-Reply-To
<1280087565-24671-1-git-send-email-avarab@gmail.com>

Document how test writers can generate coverage reports, to ensure that their tests are really testing the code they think they're testing.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
---
 t/README |   42 ++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 42 insertions(+), 0 deletions(-)
diff --git a/t/README b/t/README
index 0d1183c..15d4b52 100644
--- a/t/README
+++ b/t/README
@@ -268,6 +268,9 @@ Do:
 	git push gh &&
 	test ...
 
+ - Check the test coverage for your tests. See the "Test coverage"
+   below.
+
 Don't:
 
  - exit() within a <script> part.
@@ -508,3 +511,42 @@ the purpose of t0000-basic.sh, which is to isolate that level of
 validation in one place.  Your test also ends up needing
 updating when such a change to the internal happens, so do _not_
 do it and leave the low level of validation to t0000-basic.sh.
+
+Test coverage
+-------------
+
+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):
+
+    make coverage
+
+That'll compile Git with GCC's coverage arguments, and generate a test
+report with gcov after the tests finish. Running the coverage tests
+can take a while, since running the tests in parallel is incompatible
+with GCC's coverage mode.
+
+After the tests have run you can generate a list of untested
+functions:
+
+    make coverage-untested-functions
+
+You can also generate a detailed per-file HTML report using the
+Devel::Cover module. To install it do:
+
+   # On Debian or Ubuntu:
+   sudo aptitude install libdevel-cover-perl
+
+   # From the CPAN with cpanminus
+   curl -L http://cpanmin.us | perl - --sudo --self-upgrade
+   cpanm --sudo Devel::Cover
+
+Then, at the top-level:
+
+    make cover_db_html
+
+That'll generate a detailed cover report in the "cover_db_html"
+directory, which you can then copy to a webserver, or inspect locally
+in a browser.
-- 
1.7.0.4
Previous: Ævar Arnfjörð BjarmasonNext: Ævar Arnfjörð Bjarmason
Message 7 of 10 in “Detailed test coverage reports for Git”
  1. 0/7 Detailed test coverage reports for GitÆvar Arnfjörð Bjarmason, Jul 25, 2010
  2. 1/7 gitignore: Ignore files generated by "make coverage"Ævar Arnfjörð Bjarmason, Jul 25, 2010
  3. 2/7 Makefile: Include subdirectories in "make cover" reportsÆvar Arnfjörð Bjarmason, Jul 25, 2010
  4. 3/7 Makefile: Split out the untested functions targetÆvar Arnfjörð Bjarmason, Jul 25, 2010
  5. 4/7 Makefile: Add coverage-report-cover-db targetÆvar Arnfjörð Bjarmason, Jul 25, 2010
  6. 5/7 Makefile: Add coverage-report-cover-db-html targetÆvar Arnfjörð Bjarmason, Jul 25, 2010
  7. 6/7 t/README: A new section about test coverageÆvar Arnfjörð Bjarmason, Jul 25, 2010
  8. 7/7 t/README: Add a note about the dangers of coverage chasingÆvar Arnfjörð Bjarmason, Jul 25, 2010
  9. Thomas RastJul 26, 2010
  10. Ævar Arnfjörð BjarmasonJul 26, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.