[Python-checkins] cpython (2.7): Issue #25925: Backport C coverage reporting Makefile targets
zach.ware
python-checkins at python.org
Wed Jan 20 01:12:36 EST 2016
https://hg.python.org/cpython/rev/ed7b602a7400
changeset: 99993:ed7b602a7400
branch: 2.7
parent: 99990:65b7eb7dfb64
user: Zachary Ware <zachary.ware at gmail.com>
date: Wed Jan 20 00:11:52 2016 -0600
summary:
Issue #25925: Backport C coverage reporting Makefile targets
Originally added by Christian Heimes in 85ec2b5bfcd2.
Initial patch for the backport by Alecsandru Patrascu.
files:
.hgignore | 5 ++++
Makefile.pre.in | 42 ++++++++++++++++++++++++++++++++++++-
2 files changed, 46 insertions(+), 1 deletions(-)
diff --git a/.hgignore b/.hgignore
--- a/.hgignore
+++ b/.hgignore
@@ -30,6 +30,7 @@
Modules/ld_so_aix$
Parser/pgen$
Parser/pgen.stamp$
+^lcov-report/
^core
^python-gdb.py
^pybuilddir.txt
@@ -81,6 +82,10 @@
PCbuild/*.pdb
PCbuild/amd64
PCbuild/obj
+*.gcda
+*.gcno
+*.gcov
+coverage.info
.coverage
coverage/
externals/
diff --git a/Makefile.pre.in b/Makefile.pre.in
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
@@ -211,6 +211,11 @@
# The task to run while instrument when building the profile-opt target
PROFILE_TASK=-m test.regrtest --pgo
+# report files for gcov / lcov coverage report
+COVERAGE_INFO= $(abs_builddir)/coverage.info
+COVERAGE_REPORT=$(abs_builddir)/lcov-report
+COVERAGE_REPORT_OPTIONS=--no-branch-coverage --title "CPython lcov report"
+
# === Definitions added by makesetup ===
@@ -457,11 +462,46 @@
build_all_use_profile:
$(MAKE) all CFLAGS="$(CFLAGS) $(PGO_PROF_USE_FLAG)"
+# Compile and run with gcov
+.PHONY=coverage coverage-lcov coverage-report
coverage:
@echo "Building with support for coverage checking:"
- $(MAKE) clean
+ $(MAKE) clean profile-removal
$(MAKE) all CFLAGS="$(CFLAGS) -O0 -pg -fprofile-arcs -ftest-coverage" LIBS="$(LIBS) -lgcov"
+coverage-lcov:
+ @echo "Creating Coverage HTML report with LCOV:"
+ @rm -f $(COVERAGE_INFO)
+ @rm -rf $(COVERAGE_REPORT)
+ @lcov --capture --directory $(abs_builddir) \
+ --base-directory $(realpath $(abs_builddir)) \
+ --path $(realpath $(abs_srcdir)) \
+ --output-file $(COVERAGE_INFO)
+ : # remove 3rd party modules and system headers
+ @lcov --remove $(COVERAGE_INFO) \
+ '*/Modules/_ctypes/libffi*/*' \
+ '*/Modules/expat/*' \
+ '*/Modules/zlib/*' \
+ '*/Include/*' \
+ '/usr/include/*' \
+ '/usr/local/include/*' \
+ --output-file $(COVERAGE_INFO)
+ @genhtml $(COVERAGE_INFO) --output-directory $(COVERAGE_REPORT) \
+ $(COVERAGE_REPORT_OPTIONS)
+ @echo
+ @echo "lcov report at $(COVERAGE_REPORT)/index.html"
+ @echo
+
+coverage-report:
+ : # force rebuilding of parser
+ @touch $(GRAMMAR_INPUT)
+ : # build with coverage info
+ $(MAKE) coverage
+ : # run tests, ignore failures
+ $(TESTPYTHON) $(TESTPROG) $(TESTOPTS) || true
+ : # build lcov report
+ $(MAKE) coverage-lcov
+
# Build the interpreter
$(BUILDPYTHON): Modules/python.o $(LIBRARY) $(LDLIBRARY)
--
Repository URL: https://hg.python.org/cpython
More information about the Python-checkins
mailing list