diff options
author | Viktor Söderqvist <[email protected]> | 2015-01-27 23:50:41 +0100 |
---|---|---|
committer | Viktor Söderqvist <[email protected]> | 2015-01-27 23:50:41 +0100 |
commit | 8f39bed18723b0b60b17ea1aeecde4c6c371e3f0 (patch) | |
tree | 857f5227c079d886ec7093a843408773b95df563 | |
parent | dcb821ca1adaec189cdc99509a47fb59bc4e8d5a (diff) | |
download | erlang.mk-8f39bed18723b0b60b17ea1aeecde4c6c371e3f0.tar.gz erlang.mk-8f39bed18723b0b60b17ea1aeecde4c6c371e3f0.tar.bz2 erlang.mk-8f39bed18723b0b60b17ea1aeecde4c6c371e3f0.zip |
Add a target to merge coverdata files and rename COVER_DIR to COVER_REPORT_DIR
-rw-r--r-- | erlang.mk | 47 | ||||
-rw-r--r-- | plugins/cover.mk | 47 |
2 files changed, 54 insertions, 40 deletions
@@ -1278,7 +1278,7 @@ endif # Copyright 2015, Viktor Söderqvist <[email protected]> # This file is part of erlang.mk and subject to the terms of the ISC License. -COVER_DIR = cover +COVER_REPORT_DIR = cover # utility variables for representing special symbols empty := @@ -1321,7 +1321,7 @@ endif # Core targets ifdef COVER -ifneq ($(COVER_DIR),) +ifneq ($(COVER_REPORT_DIR),) tests:: @$(MAKE) make --no-print-directory cover-report endif @@ -1329,8 +1329,8 @@ endif clean:: coverdata-clean -ifneq ($(COVER_DIR),) -distclean:: cover-clean +ifneq ($(COVER_REPORT_DIR),) +distclean:: cover-report-clean endif help:: @@ -1338,28 +1338,35 @@ help:: "Cover targets:" \ " cover-report Generate a HTML coverage report from previously collected" \ " cover data." \ + " all.coverdata Merge {eunit,ct}.coverdata into one coverdata file." \ "" \ - "Cover-report is included in the 'tests' target by setting COVER=1." \ - "If you run 'ct' or 'eunit' separately with COVER=1, cover data is" \ - "collected but to generate a report you have to run 'cover-report'" \ - "afterwards." + "If COVER=1 is set, coverage data is generated by the targets eunit and ct. The" \ + "target tests additionally generates a HTML coverage report from the combined" \ + "coverdata files from each of these testing tools. HTML reports can be disabled" \ + "by setting COVER_REPORT_DIR to empty." # Plugin specific targets +COVERDATA = $(filter-out all.coverdata,$(wildcard *.coverdata)) + .PHONY: coverdata-clean coverdata-clean: $(gen_verbose) rm -f *.coverdata ct.cover.spec -# These are only defined if COVER_DIR is non-empty - -ifneq ($(COVER_DIR),) +# Merge all coverdata files into one. +all.coverdata: $(COVERDATA) + $(gen_verbose) $(ERL) -eval ' \ + $(foreach f,$(COVERDATA),cover:import("$(f)") == ok orelse halt(1),) \ + cover:export("$@"), halt(0).' -.PHONY: cover-clean cover-report +# These are only defined if COVER_REPORT_DIR is non-empty. Set COVER_REPORT_DIR to +# empty if you want the coverdata files but not the HTML report. +ifneq ($(COVER_REPORT_DIR),) -cover-clean: coverdata-clean - $(gen_verbose) rm -rf $(COVER_DIR) +.PHONY: cover-report-clean cover-report -COVERDATA = $(wildcard *.coverdata) +cover-report-clean: + $(gen_verbose) rm -rf $(COVER_REPORT_DIR) ifeq ($(COVERDATA),) cover-report: @@ -1369,14 +1376,14 @@ else # because eunit defines test/0 which is never called. We compensate for this. EUNIT_HRL_MODS = $(subst $(space),$(comma),$(shell \ grep -e '^\s*-include.*include/eunit\.hrl"' src/*.erl \ - | sed 's/\.erl:.*//;s/^src\///' | uniq)) + | sed "s/^src\/\(.*\)\.erl:.*/'\1'/" | uniq)) cover-report: - $(gen_verbose) mkdir -p $(COVER_DIR) + $(gen_verbose) mkdir -p $(COVER_REPORT_DIR) $(gen_verbose) $(ERL) -eval ' \ $(foreach f,$(COVERDATA),cover:import("$(f)") == ok orelse halt(1),) \ Ms = cover:imported_modules(), \ - [cover:analyse_to_file(M, "$(COVER_DIR)/" ++ atom_to_list(M) \ + [cover:analyse_to_file(M, "$(COVER_REPORT_DIR)/" ++ atom_to_list(M) \ ++ ".COVER.html", [html]) || M <- Ms], \ Report = [begin {ok, R} = cover:analyse(M, module), R end || M <- Ms], \ EunitHrlMods = [$(EUNIT_HRL_MODS)], \ @@ -1385,7 +1392,7 @@ cover-report: TotalY = lists:sum([Y || {_, {Y, _}} <- Report1]), \ TotalN = lists:sum([N || {_, {_, N}} <- Report1]), \ TotalPerc = round(100 * TotalY / (TotalY + TotalN)), \ - {ok, F} = file:open("$(COVER_DIR)/index.html", [write]), \ + {ok, F} = file:open("$(COVER_REPORT_DIR)/index.html", [write]), \ io:format(F, "<!DOCTYPE html><html>~n" \ "<head><meta charset=\"UTF-8\">~n" \ "<title>Coverage report</title></head>~n" \ @@ -1403,4 +1410,4 @@ cover-report: halt().' endif -endif # ifneq ($(COVER_DIR),) +endif # ifneq ($(COVER_REPORT_DIR),) diff --git a/plugins/cover.mk b/plugins/cover.mk index 7f62e33..b42311e 100644 --- a/plugins/cover.mk +++ b/plugins/cover.mk @@ -1,7 +1,7 @@ # Copyright 2015, Viktor Söderqvist <[email protected]> # This file is part of erlang.mk and subject to the terms of the ISC License. -COVER_DIR = cover +COVER_REPORT_DIR = cover # utility variables for representing special symbols empty := @@ -44,7 +44,7 @@ endif # Core targets ifdef COVER -ifneq ($(COVER_DIR),) +ifneq ($(COVER_REPORT_DIR),) tests:: @$(MAKE) make --no-print-directory cover-report endif @@ -52,8 +52,8 @@ endif clean:: coverdata-clean -ifneq ($(COVER_DIR),) -distclean:: cover-clean +ifneq ($(COVER_REPORT_DIR),) +distclean:: cover-report-clean endif help:: @@ -61,28 +61,35 @@ help:: "Cover targets:" \ " cover-report Generate a HTML coverage report from previously collected" \ " cover data." \ + " all.coverdata Merge {eunit,ct}.coverdata into one coverdata file." \ "" \ - "Cover-report is included in the 'tests' target by setting COVER=1." \ - "If you run 'ct' or 'eunit' separately with COVER=1, cover data is" \ - "collected but to generate a report you have to run 'cover-report'" \ - "afterwards." + "If COVER=1 is set, coverage data is generated by the targets eunit and ct. The" \ + "target tests additionally generates a HTML coverage report from the combined" \ + "coverdata files from each of these testing tools. HTML reports can be disabled" \ + "by setting COVER_REPORT_DIR to empty." # Plugin specific targets +COVERDATA = $(filter-out all.coverdata,$(wildcard *.coverdata)) + .PHONY: coverdata-clean coverdata-clean: $(gen_verbose) rm -f *.coverdata ct.cover.spec -# These are only defined if COVER_DIR is non-empty - -ifneq ($(COVER_DIR),) +# Merge all coverdata files into one. +all.coverdata: $(COVERDATA) + $(gen_verbose) $(ERL) -eval ' \ + $(foreach f,$(COVERDATA),cover:import("$(f)") == ok orelse halt(1),) \ + cover:export("$@"), halt(0).' -.PHONY: cover-clean cover-report +# These are only defined if COVER_REPORT_DIR is non-empty. Set COVER_REPORT_DIR to +# empty if you want the coverdata files but not the HTML report. +ifneq ($(COVER_REPORT_DIR),) -cover-clean: coverdata-clean - $(gen_verbose) rm -rf $(COVER_DIR) +.PHONY: cover-report-clean cover-report -COVERDATA = $(wildcard *.coverdata) +cover-report-clean: + $(gen_verbose) rm -rf $(COVER_REPORT_DIR) ifeq ($(COVERDATA),) cover-report: @@ -92,14 +99,14 @@ else # because eunit defines test/0 which is never called. We compensate for this. EUNIT_HRL_MODS = $(subst $(space),$(comma),$(shell \ grep -e '^\s*-include.*include/eunit\.hrl"' src/*.erl \ - | sed 's/\.erl:.*//;s/^src\///' | uniq)) + | sed "s/^src\/\(.*\)\.erl:.*/'\1'/" | uniq)) cover-report: - $(gen_verbose) mkdir -p $(COVER_DIR) + $(gen_verbose) mkdir -p $(COVER_REPORT_DIR) $(gen_verbose) $(ERL) -eval ' \ $(foreach f,$(COVERDATA),cover:import("$(f)") == ok orelse halt(1),) \ Ms = cover:imported_modules(), \ - [cover:analyse_to_file(M, "$(COVER_DIR)/" ++ atom_to_list(M) \ + [cover:analyse_to_file(M, "$(COVER_REPORT_DIR)/" ++ atom_to_list(M) \ ++ ".COVER.html", [html]) || M <- Ms], \ Report = [begin {ok, R} = cover:analyse(M, module), R end || M <- Ms], \ EunitHrlMods = [$(EUNIT_HRL_MODS)], \ @@ -108,7 +115,7 @@ cover-report: TotalY = lists:sum([Y || {_, {Y, _}} <- Report1]), \ TotalN = lists:sum([N || {_, {_, N}} <- Report1]), \ TotalPerc = round(100 * TotalY / (TotalY + TotalN)), \ - {ok, F} = file:open("$(COVER_DIR)/index.html", [write]), \ + {ok, F} = file:open("$(COVER_REPORT_DIR)/index.html", [write]), \ io:format(F, "<!DOCTYPE html><html>~n" \ "<head><meta charset=\"UTF-8\">~n" \ "<title>Coverage report</title></head>~n" \ @@ -126,4 +133,4 @@ cover-report: halt().' endif -endif # ifneq ($(COVER_DIR),) +endif # ifneq ($(COVER_REPORT_DIR),) |