This patch can be used to generate a report showing what C source lines are executed when the testsuite is run. gcc is required. After applying this patch do: $ ./configure --enable-gcov $ make check $ make gcov Now look at gcov-report.html and the annotated source files it links to. See also gcov(1), gcc(1). Index: Makefile.in =================================================================== --- Makefile.in (revision 32484) +++ Makefile.in (working copy) @@ -443,6 +443,36 @@ @$(MAKE) check \ BASE_URL=svn+ssh://localhost`pwd`/subversion/tests/cmdline +gcov: + @echo -n "Collecting source files ..." ; \ + FILES=`find subversion/ -path '*/tests/*' -prune -o \ + -name '*.c' -print`; \ + echo "Done." ; \ + echo "Coverage report Subversion r`svnversion .`<br>" \ + echo "`date`<br>" \ + > gcov-report.html; \ + echo `uname -o -r -m` "<br>" \ + >> gcov-report.html; \ + (for file in $$FILES; do \ + echo $$file 1>&2 ; \ + base=`echo $$file | sed -e 's/.c$$//' `; \ + if [ -f "$$base.da" ] ; then \ + obj=$$base.o; \ + else \ + obj=`dirname $$base`/.libs/`basename $$base`.o; \ + fi; \ + stats=`gcov --preserve-paths \ + --object-directory=$$obj \ + $$file | sed -e "s/Creating.*//" | \ + sed -s "s|$$PWD/||"` \ + mangled=`echo $$base | tr '/' '#'`; \ + fixed=`echo $$base | tr '/' '_'`; \ + mv *$$mangled.c.gcov $$fixed.c.gcov; \ + echo -n $$stats | \ + sed -e "s/in file/in file <a href=\"$$fixed.c.gcov\">/"; \ + echo "</a><br>"; \ + done) | sort -g >> gcov-report.html + bdbcheck: @$(MAKE) check FS_TYPE=bdb Index: configure.ac =================================================================== --- configure.ac (revision 32484) +++ configure.ac (working copy) @@ -684,6 +684,14 @@ # # do nothing fi +AC_ARG_ENABLE(gcov, +AC_HELP_STRING([--enable-gcov], + [Turn on coverage testing (GCC only).]), +[ + if test "$enableval" = "yes" ; then + CFLAGS="$CFLAGS -fprofile-arcs -ftest-coverage" + fi +]) AC_ARG_WITH(editor, AS_HELP_STRING([--with-editor=PATH],