This allows the offline tests to also generate coverage data, and the
hs-coverage target is changed to show both unit-test and offline-tests
coverage.
The downside is that now we build yet-another-binary, which makes the
unit-test time slower…
---
.gitignore | 2 ++
Makefile.am | 20 ++++++++++++--------
htools/cli-tests-defs.sh | 2 +-
htools/htools-hpc.hs | 1 +
4 files changed, 16 insertions(+), 9 deletions(-)
create mode 120000 htools/htools-hpc.hs
diff --git a/.gitignore b/.gitignore
index 1b82e7c..7bb5cda 100644
--- a/.gitignore
+++ b/.gitignore
@@ -101,11 +101,13 @@
/htools/coverage
/htools/htools
+/htools/htools-hpc
/htools/test
/htools/*.prof*
/htools/*.stat
/htools/*.tix
/.hpc/
+/*.tix
/htools/Ganeti/HTools/Version.hs
/htools/Ganeti/Constants.hs
diff --git a/Makefile.am b/Makefile.am
index 961c184..f134044 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -351,7 +351,7 @@ docrst = \
HS_PROGS = htools/htools
HS_BIN_ROLES = hbal hscan hspace hinfo
-HS_ALL_PROGS = $(HS_PROGS) htools/test
+HS_ALL_PROGS = $(HS_PROGS) htools/test htools/htools-hpc
HS_PROG_SRCS = $(patsubst %,%.hs,$(HS_ALL_PROGS))
# we don't add -Werror by default
HFLAGS = -O -Wall -fwarn-monomorphism-restriction -fwarn-tabs -ihtools
@@ -527,8 +527,11 @@ htools/test: HEXTRA_INT=-fhpc -Wwarn
-fno-warn-missing-signatures \
-fno-warn-monomorphism-restriction -fno-warn-orphans \
-fno-warn-missing-methods -fno-warn-unused-imports
+# we compile the htools-hpc binary with the program coverage
+htools/htools-hpc: HEXTRA_INT=-fhpc
+
# test dependency
-htools/offline-tests.sh: htools/htools
+htools/offline-tests.sh: htools/htools-hpc
# rules for building profiling-enabled versions of the haskell
# programs: hs-prof does the full two-step build, whereas
@@ -1206,10 +1209,10 @@ check-local: check-dirs $(BUILT_SOURCES)
done
.PHONY: hs-check
-hs-check: htools/test htools/htools
+hs-check: htools/test htools/htools-hpc
@rm -f test.tix
./htools/test
- HBINARY="./htools/htools" ./htools/offline-test.sh
+ HBINARY="./htools/htools-hpc" ./htools/offline-test.sh
# E111: indentation is not a multiple of four
# E261: at least two spaces before inline comment
@@ -1372,11 +1375,12 @@ py-coverage: $(BUILT_SOURCES) $(python_tests)
$(python_tests)
.PHONY: hs-coverage
-hs-coverage: $(haskell_tests)
- cd htools && rm -f *.tix *.mix && ./test
+hs-coverage: $(haskell_tests) htools/htools-hpc
+ rm -f *.tix && $(MAKE) hs-check
@mkdir_p@ $(COVERAGE_HS_DIR)
- hpc markup --destdir=$(COVERAGE_HS_DIR) htools/test $(HPCEXCL)
- hpc report htools/test $(HPCEXCL)
+ hpc combine $(HPCEXCL) test.tix htools-hpc.tix > htools-coverage.tix
+ hpc markup --destdir=$(COVERAGE_HS_DIR) htools-coverage.tix
+ hpc report htools-coverage.tix
$(LN_S) -f hpc_index.html $(COVERAGE_HS_DIR)/index.html
# Special "kind-of-QA" target for htools, needs special setup (all
diff --git a/htools/cli-tests-defs.sh b/htools/cli-tests-defs.sh
index da24b0c..89821f8 100644
--- a/htools/cli-tests-defs.sh
+++ b/htools/cli-tests-defs.sh
@@ -19,7 +19,7 @@
# This is an shell testing configuration fragment.
-HBINARY=${HBINARY:-./htools/htools}
+HBINARY=${HBINARY:-./htools/htools-hpc}
hbal() {
HTOOLS=hbal $HBINARY "$@"
diff --git a/htools/htools-hpc.hs b/htools/htools-hpc.hs
new file mode 120000
index 0000000..487efdc
--- /dev/null
+++ b/htools/htools-hpc.hs
@@ -0,0 +1 @@
+htools.hs
\ No newline at end of file
--
1.7.9.1