Support coverage testing with GCC/gcov
authorThomas Rast <trast@student.ethz.ch>
Thu, 19 Feb 2009 11:13:35 +0000 (12:13 +0100)
committerJunio C Hamano <gitster@pobox.com>
Fri, 20 Feb 2009 08:01:57 +0000 (00:01 -0800)
commit901c369af52ffcc8c08457fb5b330eab217a9cfb
treefccd010cd60643028e82e442d5ab93fd204e3a4b
parent1b7e543a6e2f156536a3cf227f9da1029bba6265
Support coverage testing with GCC/gcov

With gcc's --coverage option, we can perform automatic coverage data
collection for the test suite.

Add a new Makefile target 'coverage' that scraps all previous coverage
results, recompiles git with the required compiler/linker flags (in
addition to any flags you specify manually), then runs the test suite
and compiles a report.

The compilation must be done with all optimizations disabled, since
inlined functions (and for line-by-line coverage, also optimized
branches/loops) break coverage tracking.

The tests are run serially (with -j1).  The coverage code should
theoretically allow concurrent access to its data files, but the
author saw random test failures.  Obviously this could be improved.

The report currently consists of a list of functions that were never
executed during the tests, which is written to
'coverage-untested-functions'.  Once this list becomes reasonably
short, we would also want to look at branches that were never taken.

Currently only toplevel *.c files are considered.  It would be nice to
at least include xdiff, but --coverage did not save data to
subdirectories on the system used to write this (gcc 4.3.2).

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Makefile