diff options
author | Loïc Hoguin <[email protected]> | 2017-07-10 12:07:12 +0200 |
---|---|---|
committer | Loïc Hoguin <[email protected]> | 2017-07-10 12:11:51 +0200 |
commit | ff271594f58dc7425483fe3ccc649defc552a04c (patch) | |
tree | 745f11680e61bd1c74920923fc6d7e2b36c225eb /plugins | |
parent | 70b86284812e46c4a3a607aacaec67af2453fff0 (diff) | |
download | erlang.mk-ff271594f58dc7425483fe3ccc649defc552a04c.tar.gz erlang.mk-ff271594f58dc7425483fe3ccc649defc552a04c.tar.bz2 erlang.mk-ff271594f58dc7425483fe3ccc649defc552a04c.zip |
Add initial plugin for proper
Should act the same way as the Triq plugin, making switching
mostly painless, excluding the differences between the two
libraries.
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/proper.mk | 53 | ||||
-rw-r--r-- | plugins/triq.mk | 2 |
2 files changed, 54 insertions, 1 deletions
diff --git a/plugins/proper.mk b/plugins/proper.mk new file mode 100644 index 0000000..d6ae48e --- /dev/null +++ b/plugins/proper.mk @@ -0,0 +1,53 @@ +# Copyright (c) 2015-2017, Loïc Hoguin <[email protected]> +# This file is part of erlang.mk and subject to the terms of the ISC License. + +ifeq ($(filter proper,$(DEPS) $(TEST_DEPS)),proper) +.PHONY: proper + +# Targets. + +tests:: proper + +define proper_check.erl + code:add_pathsa(["$(call core_native_path,$(CURDIR)/ebin)", "$(call core_native_path,$(DEPS_DIR)/*/ebin)"]), + Module = fun(M) -> + [true] =:= lists:usort([ + case atom_to_list(F) of + "prop_" ++ _ -> + io:format("Testing ~p:~p/0~n", [M, F]), + proper:quickcheck(M:F()); + _ -> + true + end + || {F, 0} <- M:module_info(exports)]) + end, + try + case $(1) of + all -> [true] =:= lists:usort([Module(M) || M <- [$(call comma_list,$(3))]]); + module -> Module($(2)); + function -> proper:quickcheck($(2)) + end + of + true -> halt(0); + _ -> halt(1) + catch error:undef -> + io:format("Undefined property or module?~n~p~n", [erlang:get_stacktrace()]), + halt(0) + end. +endef + +ifdef t +ifeq (,$(findstring :,$(t))) +proper: test-build + $(verbose) $(call erlang,$(call proper_check.erl,module,$(t))) +else +proper: test-build + $(verbose) echo Testing $(t)/0 + $(verbose) $(call erlang,$(call proper_check.erl,function,$(t)())) +endif +else +proper: test-build + $(eval MODULES := $(patsubst %,'%',$(sort $(notdir $(basename $(wildcard ebin/*.beam)))))) + $(gen_verbose) $(call erlang,$(call proper_check.erl,all,undefined,$(MODULES))) +endif +endif diff --git a/plugins/triq.mk b/plugins/triq.mk index 784f2e2..09443b5 100644 --- a/plugins/triq.mk +++ b/plugins/triq.mk @@ -20,7 +20,7 @@ define triq_check.erl true -> halt(0); _ -> halt(1) catch error:undef -> - io:format("Undefined property or module~n"), + io:format("Undefined property or module?~n~p~n", [erlang:get_stacktrace()]), halt(0) end. endef |