From 141c84210f2d74144512100a9f7bfc68d83dc831 Mon Sep 17 00:00:00 2001
From: Michael Hanselmann <hansmi@google.com>
Date: Mon, 22 Oct 2012 17:05:16 +0200
Subject: [PATCH] Find coverage during configure, issue with Debian package
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

- Debian Squeeze and up have a package named β€œpython-coverage”, but it
  doesn't use the same binary name as upstream (β€œcoverage”).
- Said package includes a patch to use symlinks instead of file copies
  for jQuery. If files from previous runs are around, an exception is
  raised. This is fixed by removing all regular files and symlinks
  before generating a report.

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>
---
 Makefile.am            |  3 +++
 autotools/gen-coverage | 13 ++++++++++++-
 configure.ac           | 11 ++++++++++-
 3 files changed, 25 insertions(+), 2 deletions(-)

diff --git a/Makefile.am b/Makefile.am
index 3314aa2fe..f9b4a9415 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1640,7 +1640,10 @@ endif
 
 .PHONY: py-coverage
 py-coverage: $(GENERATED_FILES) $(python_tests)
+	@test -n "$(PYCOVERAGE)" || \
+	    { echo 'python-coverage' not found during configure; exit 1; }
 	set -e; \
+	COVERAGE=$(PYCOVERAGE) \
 	COVERAGE_FILE=$(CURDIR)/$(COVERAGE_PY_DIR)/data \
 	TEXT_COVERAGE=$(CURDIR)/$(COVERAGE_PY_DIR)/report.txt \
 	HTML_COVERAGE=$(CURDIR)/$(COVERAGE_PY_DIR) \
diff --git a/autotools/gen-coverage b/autotools/gen-coverage
index ab16cc513..38bdd38b8 100755
--- a/autotools/gen-coverage
+++ b/autotools/gen-coverage
@@ -21,10 +21,11 @@
 set -e
 set -u
 
-: ${COVERAGE:=coverage}
 : ${PYTHON:=python}
+: ${COVERAGE:?}
 : ${COVERAGE_FILE:?}
 : ${TEXT_COVERAGE:?}
+: ${HTML_COVERAGE:=}
 : ${GANETI_TEMP_DIR:?}
 
 reportargs=(
@@ -34,6 +35,16 @@ reportargs=(
 
 $COVERAGE erase
 
+if [[ -n "$HTML_COVERAGE" ]]; then
+  if [[ ! -d "$HTML_COVERAGE" ]]; then
+    echo "Not a directory: $HTML_COVERAGE" >&2
+    exit 1
+  fi
+
+  # At least coverage 3.4 fails to overwrite files
+  find "$HTML_COVERAGE" \( -type f -o -type l \) -delete
+fi
+
 for script; do
   if [[ "$script" == *-runasroot.py ]]; then
     if [[ -z "$FAKEROOT" ]]; then
diff --git a/configure.ac b/configure.ac
index 3d7eaa343..da464152b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -373,7 +373,16 @@ if test -z "$PEP8"
 then
   AC_MSG_WARN([pep8 not found, checking code will not be complete])
 fi
-AM_CONDITIONAL([HAS_PEP8], [test "$PEP8"])
+AM_CONDITIONAL([HAS_PEP8], [test -n "$PEP8"])
+
+# Check for python-coverage
+AC_ARG_VAR(PYCOVERAGE, [python-coverage path])
+AC_PATH_PROGS(PYCOVERAGE, [python-coverage coverage], [])
+if test -z "$PYCOVERAGE"
+then
+  AC_MSG_WARN(m4_normalize([python-coverage or coverage not found, evaluating
+                            Python test coverage will not be possible]))
+fi
 
 # Check for socat
 AC_ARG_VAR(SOCAT, [socat path])
-- 
GitLab