From e0f8b46b0d5a78a10783d0b3a02ce15f3dafbd99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Hoguin?= Date: Mon, 14 May 2018 14:01:36 +0200 Subject: Add the test directory in the list of paths for proper --- plugins/proper.mk | 8 ++++++-- test/plugin_proper.mk | 40 ++++++++++++++++++++++++++++++++++++++++ test/plugin_triq.mk | 5 +++-- 3 files changed, 49 insertions(+), 4 deletions(-) create mode 100644 test/plugin_proper.mk diff --git a/plugins/proper.mk b/plugins/proper.mk index fe9a980..b749d9e 100644 --- a/plugins/proper.mk +++ b/plugins/proper.mk @@ -9,7 +9,10 @@ ifeq ($(filter proper,$(DEPS) $(TEST_DEPS)),proper) tests:: proper define proper_check.erl - code:add_pathsa(["$(call core_native_path,$(CURDIR)/ebin)", "$(call core_native_path,$(DEPS_DIR)/*/ebin)"]), + code:add_pathsa([ + "$(call core_native_path,$(CURDIR)/ebin)", + "$(call core_native_path,$(DEPS_DIR)/*/ebin)", + "$(call core_native_path,$(TEST_DIR))"]), Module = fun(M) -> [true] =:= lists:usort([ case atom_to_list(F) of @@ -47,7 +50,8 @@ proper: test-build endif else proper: test-build - $(eval MODULES := $(patsubst %,'%',$(sort $(notdir $(basename $(wildcard ebin/*.beam)))))) + $(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))) endif endif diff --git a/test/plugin_proper.mk b/test/plugin_proper.mk new file mode 100644 index 0000000..70a520c --- /dev/null +++ b/test/plugin_proper.mk @@ -0,0 +1,40 @@ +# PropEr plugin. + +PROPER_CASES = test-dir +PROPER_TARGETS = $(addprefix proper-,$(PROPER_CASES)) + +.PHONY: proper $(PROPER_TARGETS) + +proper: $(PROPER_TARGETS) + +proper-test-dir: build clean + + $i "Bootstrap a new OTP application named $(APP)" + $t mkdir $(APP)/ + $t cp ../erlang.mk $(APP)/ + $t $(MAKE) -C $(APP) -f erlang.mk bootstrap $v + + $i "Add PropEr to the list of dependencies" + $t perl -ni.bak -e 'print;if ($$.==1) {print "DEPS = proper\n"}' $(APP)/Makefile + + $i "Generate a module containing Proper properties" + $t printf "%s\n" \ + "-module($(APP))." \ + "-ifdef(TEST)." \ + "-include_lib(\"proper/include/proper.hrl\")." \ + "prop_foo() -> ?FORALL(_, any(), true)." \ + "-endif." > $(APP)/src/$(APP).erl + + $i "Generate a module containing PropEr properties in TEST_DIR" + $t mkdir $(APP)/test + $t printf "%s\n" \ + "-module($(APP)_tests)." \ + "-include_lib(\"proper/include/proper.hrl\")." \ + "prop_bar() -> ?FORALL(_, any(), true)." > $(APP)/test/$(APP)_tests.erl + + $i "Run the PropEr plugin" + $t $(MAKE) -C $(APP) proper > $(APP)/proper.log + + $i "Check that both properties were checked" + $t grep -q prop_foo $(APP)/proper.log + $t grep -q prop_bar $(APP)/proper.log diff --git a/test/plugin_triq.mk b/test/plugin_triq.mk index 908ce47..a447e25 100644 --- a/test/plugin_triq.mk +++ b/test/plugin_triq.mk @@ -1,4 +1,4 @@ -# Triq plugin +# Triq plugin. TRIQ_CASES = test-dir TRIQ_TARGETS = $(addprefix triq-,$(TRIQ_CASES)) @@ -8,6 +8,7 @@ TRIQ_TARGETS = $(addprefix triq-,$(TRIQ_CASES)) triq: $(TRIQ_TARGETS) triq-test-dir: build clean + $i "Bootstrap a new OTP application named $(APP)" $t mkdir $(APP)/ $t cp ../erlang.mk $(APP)/ @@ -24,7 +25,7 @@ triq-test-dir: build clean "prop_foo() -> ?FORALL(_, any(), true)." \ "-endif." > $(APP)/src/$(APP).erl - $i "Generate a module containing Triq properies in TEST_DIR" + $i "Generate a module containing Triq properties in TEST_DIR" $t mkdir $(APP)/test $t printf "%s\n" \ "-module($(APP)_tests)." \ -- cgit v1.2.3