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

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

From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date
Jul 24, 2010, 20:51 UTC
Message-ID
<1280004663-4887-7-git-send-email-avarab@gmail.com>
In-Reply-To
<1280004663-4887-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 |   40 ++++++++++++++++++++++++++++++++++++++++
 1 files changed, 40 insertions(+), 0 deletions(-)
diff --git a/t/README b/t/README
index 0d1183c..718f35d 100644
--- a/t/README
+++ b/t/README
@@ -267,6 +267,9 @@ Do:
 	git merge hla &&
 	git push gh &&
 	test ...
+    
+ - Check the test coverage for your tests. See the "Test coverage"
+   below.
 
 Don't:
 
@@ -508,3 +511,40 @@ 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 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):
+
+    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-report-untested-functions
+
+You can also generate a detailed per-file HTML report using the
+Devel::Cover module. To install it do:
+
+   # On Debian:
+   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 coverage-report-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: Jonathan Nieder
Message 15 of 19 in “Detailed test coverage reports for Git”
  1. 0/6 Detailed test coverage reports for GitÆvar Arnfjörð Bjarmason, Jul 24, 2010
  2. 1/6 gitignore: Ignore files generated by "make coverage"Ævar Arnfjörð Bjarmason, Jul 24, 2010
  3. 2/6 Makefile: Include subdirectories in "make cover" reportsÆvar Arnfjörð Bjarmason, Jul 24, 2010
  4. Thomas RastJul 24, 2010
  5. Ævar Arnfjörð BjarmasonJul 24, 2010
  6. Jonathan NiederJul 24, 2010
  7. Junio C HamanoJul 26, 2010
  8. 3/6 Makefile: Split out the untested functions targetÆvar Arnfjörð Bjarmason, Jul 24, 2010
  9. Thomas RastJul 24, 2010
  10. Ævar Arnfjörð BjarmasonJul 24, 2010
  11. 4/6 Makefile: Add coverage-report-cover-db targetÆvar Arnfjörð Bjarmason, Jul 24, 2010
  12. Thomas RastJul 24, 2010
  13. Ævar Arnfjörð BjarmasonJul 24, 2010
  14. 5/6 Makefile: Add coverage-report-cover-db-html targetÆvar Arnfjörð Bjarmason, Jul 24, 2010
  15. 6/6 t/README: A new section about test coverageÆvar Arnfjörð Bjarmason, Jul 24, 2010
  16. Jonathan NiederJul 24, 2010
  17. Jonathan NiederJul 24, 2010
  18. Ævar Arnfjörð BjarmasonJul 24, 2010
  19. Jonathan NiederJul 24, 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.