summaryrefslogtreecommitdiff
path: root/t/README
diff options
context:
space:
mode:
authorLibravatar Ævar Arnfjörð Bjarmason <avarab@gmail.com>2010-07-25 19:52:44 +0000
committerLibravatar Junio C Hamano <gitster@pobox.com>2010-08-18 12:42:37 -0700
commit0c357544b0d4415c464fb8b35593b21db1d1f7f7 (patch)
treec49a91479b472b393cc341cefba47e52306b130b /t/README
parentMakefile: Add cover_db_html target (diff)
downloadtgif-0c357544b0d4415c464fb8b35593b21db1d1f7f7.tar.xz
t/README: A new section about test coverage
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> Reviewed-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/README')
-rw-r--r--t/README42
1 files changed, 42 insertions, 0 deletions
diff --git a/t/README b/t/README
index 336871fe42..468876de0d 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.
@@ -555,6 +558,45 @@ 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.
+
Smoke testing
-------------