From 754bad09421c70034242f4370c633e177a869151 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Hoguin?= Date: Thu, 6 Dec 2018 18:25:09 +0100 Subject: Add cover support for PropEr and Triq --- plugins/cover.mk | 25 ++++++++++++++++++++++++- plugins/eunit.mk | 21 +++------------------ plugins/proper.mk | 18 +++++++++++------- plugins/triq.mk | 18 +++++++++++------- 4 files changed, 49 insertions(+), 33 deletions(-) (limited to 'plugins') diff --git a/plugins/cover.mk b/plugins/cover.mk index 416219c..6fd8829 100644 --- a/plugins/cover.mk +++ b/plugins/cover.mk @@ -5,7 +5,7 @@ COVER_REPORT_DIR ?= cover COVER_DATA_DIR ?= $(COVER_REPORT_DIR) -# Hook in coverage to ct +# Code coverage for Common Test. ifdef COVER ifdef CT_RUN @@ -22,6 +22,29 @@ endif endif endif +# Code coverage for other tools. + +ifdef COVER +define cover.erl + CoverSetup = fun() -> + case filelib:is_dir("ebin") of + false -> false; + true -> + case cover:compile_beam_directory("ebin") of + {error, _} -> halt(1); + _ -> true + end + end + end, + CoverExport = fun(Filename) -> cover:export(Filename) end, +endef +else +define cover.erl + CoverSetup = fun() -> ok end, + CoverExport = fun(_) -> ok end, +endef +endif + # Core targets ifdef COVER diff --git a/plugins/eunit.mk b/plugins/eunit.mk index 600010d..1847453 100644 --- a/plugins/eunit.mk +++ b/plugins/eunit.mk @@ -21,28 +21,13 @@ help:: # Plugin-specific targets. define eunit.erl - Enabled = case "$(COVER)" of - "" -> false; - _ -> - case filelib:is_dir("ebin") of - false -> false; - true -> - case cover:compile_beam_directory("ebin") of - {error, _} -> halt(1); - _ -> true - end - end - end, + $(call cover.erl) + CoverSetup(), case eunit:test($1, [$(EUNIT_OPTS)]) of ok -> ok; error -> halt(2) end, - case {Enabled, "$(COVER)"} of - {false, _} -> ok; - {_, ""} -> ok; - _ -> - cover:export("$(COVER_DATA_DIR)/eunit.coverdata") - end, + CoverExport("$(COVER_DATA_DIR)/eunit.coverdata"), halt() endef diff --git a/plugins/proper.mk b/plugins/proper.mk index b749d9e..6262199 100644 --- a/plugins/proper.mk +++ b/plugins/proper.mk @@ -9,6 +9,7 @@ ifeq ($(filter proper,$(DEPS) $(TEST_DEPS)),proper) tests:: proper define proper_check.erl + $(call cover.erl) code:add_pathsa([ "$(call core_native_path,$(CURDIR)/ebin)", "$(call core_native_path,$(DEPS_DIR)/*/ebin)", @@ -24,13 +25,16 @@ define proper_check.erl end || {F, 0} <- M:module_info(exports)]) end, - try - case $(1) of + try begin + CoverSetup(), + Res = case $(1) of all -> [true] =:= lists:usort([Module(M) || M <- [$(call comma_list,$(3))]]); module -> Module($(2)); function -> proper:quickcheck($(2), nocolors) - end - of + end, + CoverExport("$(COVER_DATA_DIR)/proper.coverdata"), + Res + end of true -> halt(0); _ -> halt(1) catch error:undef -> @@ -41,15 +45,15 @@ endef ifdef t ifeq (,$(findstring :,$(t))) -proper: test-build +proper: test-build cover-data-dir $(verbose) $(call erlang,$(call proper_check.erl,module,$(t))) else -proper: test-build +proper: test-build cover-data-dir $(verbose) echo Testing $(t)/0 $(verbose) $(call erlang,$(call proper_check.erl,function,$(t)())) endif else -proper: test-build +proper: test-build cover-data-dir $(eval MODULES := $(patsubst %,'%',$(sort $(notdir $(basename \ $(wildcard ebin/*.beam) $(call core_find,$(TEST_DIR)/,*.beam)))))) $(gen_verbose) $(call erlang,$(call proper_check.erl,all,undefined,$(MODULES))) diff --git a/plugins/triq.mk b/plugins/triq.mk index 9d5a30f..8791e2c 100644 --- a/plugins/triq.mk +++ b/plugins/triq.mk @@ -9,17 +9,21 @@ ifeq ($(filter triq,$(DEPS) $(TEST_DEPS)),triq) tests:: triq define triq_check.erl + $(call cover.erl) code:add_pathsa([ "$(call core_native_path,$(CURDIR)/ebin)", "$(call core_native_path,$(DEPS_DIR)/*/ebin)", "$(call core_native_path,$(TEST_DIR))"]), - try - case $(1) of + try begin + CoverSetup(), + Res = case $(1) of all -> [true] =:= lists:usort([triq:check(M) || M <- [$(call comma_list,$(3))]]); module -> triq:check($(2)); function -> triq:check($(2)) - end - of + end, + CoverExport("$(COVER_DATA_DIR)/triq.coverdata"), + Res + end of true -> halt(0); _ -> halt(1) catch error:undef -> @@ -30,15 +34,15 @@ endef ifdef t ifeq (,$(findstring :,$(t))) -triq: test-build +triq: test-build cover-data-dir $(verbose) $(call erlang,$(call triq_check.erl,module,$(t))) else -triq: test-build +triq: test-build cover-data-dir $(verbose) echo Testing $(t)/0 $(verbose) $(call erlang,$(call triq_check.erl,function,$(t)())) endif else -triq: test-build +triq: test-build cover-data-dir $(eval MODULES := $(patsubst %,'%',$(sort $(notdir $(basename \ $(wildcard ebin/*.beam) $(call core_find,$(TEST_DIR)/,*.beam)))))) $(gen_verbose) $(call erlang,$(call triq_check.erl,all,undefined,$(MODULES))) -- cgit v1.2.3