From: Ævar Arnfjörð Bjarmason Date: Sat, 24 Jul 2010 20:51:03 GMT Subject: [PATCH 6/6] t/README: A new section about test coverage 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 --- 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