From 405b5f316acaef0152f93122db7f0b257a0a6fce Mon Sep 17 00:00:00 2001 From: Georg Brandl Date: Sun, 18 May 2008 11:46:51 +0000 Subject: [PATCH] GHOP #217: add support for compiling Python with coverage checking enabled. --- Makefile.pre.in | 6 ++++++ README | 20 ++++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/Makefile.pre.in b/Makefile.pre.in index 80043c24ad8..b692a4661e4 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -375,6 +375,12 @@ run_profile_task: build_all_use_profile: $(MAKE) all CFLAGS="$(CFLAGS) -fprofile-use" +coverage: + @echo "Building with support for coverage checking:" + $(MAKE) clean + $(MAKE) all CFLAGS="$(CFLAGS) -O0 -pg -fprofile-arcs -ftest-coverage" LIBS="$(LIBS) -lgcov" + + # Build the interpreter $(BUILDPYTHON): Modules/python.o $(LIBRARY) $(LDLIBRARY) $(LINKCC) $(LDFLAGS) $(LINKFORSHARED) -o $@ \ diff --git a/README b/README index e97bb17b93c..8f53ca43e42 100644 --- a/README +++ b/README @@ -917,6 +917,26 @@ libraries. The Makefile/Setup mechanism can be used to compile and link most extension modules statically. +Coverage checking +----------------- + +For C coverage checking using gcov, run "make coverage". This will +build a Python binary with profiling activated, and a ".gcno" and +".gcda" file for every source file compiled with that option. With +the built binary, now run the code whose coverage you want to check. +Then, you can see coverage statistics for each individual source file +by running gcov, e.g. + + gcov -o Modules zlibmodule + +This will create a "zlibmodule.c.gcov" file in the current directory +containing coverage info for that source file. + +This works only for source files statically compiled into the +executable; use the Makefile/Setup mechanism to compile and link +extension modules you want to coverage-check statically. + + Testing -------