aboutsummaryrefslogtreecommitdiffstats
path: root/core/test.mk
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2015-01-10 18:25:22 +0100
committerLoïc Hoguin <[email protected]>2015-01-10 18:41:44 +0100
commit7ee4e7958acf0f0956bd64023ecb1731b2824b5e (patch)
treebdeee9ec023b237d02cff28d9a33e6589877cb4f /core/test.mk
parent098aa65854199fe1f58e4bd870f948bdd597741a (diff)
downloaderlang.mk-7ee4e7958acf0f0956bd64023ecb1731b2824b5e.tar.gz
erlang.mk-7ee4e7958acf0f0956bd64023ecb1731b2824b5e.tar.bz2
erlang.mk-7ee4e7958acf0f0956bd64023ecb1731b2824b5e.zip
Introduce test builds and unify testing tools interface
The general idea is that erlang.mk now keeps track of what kind of build it generated. A test build is valid for all subsequent test target invocations. A normal build is only valid for itself and releases. This rework adds the ability to specify deps to eunit. The EUNIT_DIR variable is gone in favor of a more global TEST_DIR. The tests-ct target got renamed to ct and documented. Many more minor changes were done during the course of testing these changes.
Diffstat (limited to 'core/test.mk')
-rw-r--r--core/test.mk44
1 files changed, 44 insertions, 0 deletions
diff --git a/core/test.mk b/core/test.mk
new file mode 100644
index 0000000..d3f49c2
--- /dev/null
+++ b/core/test.mk
@@ -0,0 +1,44 @@
+# Copyright (c) 2015, Loïc Hoguin <[email protected]>
+# This file is part of erlang.mk and subject to the terms of the ISC License.
+
+.PHONY: test-deps test-dir test-build clean-test-dir
+
+# Configuration.
+
+TEST_DIR ?= test
+
+ALL_TEST_DEPS_DIRS = $(addprefix $(DEPS_DIR)/,$(TEST_DEPS))
+
+TEST_ERLC_OPTS ?= +debug_info +warn_export_vars +warn_shadow_vars +warn_obsolete_guard
+TEST_ERLC_OPTS += -DTEST=1
+
+# Targets.
+
+$(foreach dep,$(TEST_DEPS),$(eval $(call dep_target,$(dep))))
+
+test-deps: $(ALL_TEST_DEPS_DIRS)
+ @for dep in $(ALL_TEST_DEPS_DIRS) ; do $(MAKE) -C $$dep; done
+
+ifneq ($(strip $(TEST_DIR)),)
+test-dir:
+ $(gen_verbose) erlc -v $(TEST_ERLC_OPTS) -I include/ -o $(TEST_DIR) \
+ $(wildcard $(TEST_DIR)/*.erl $(TEST_DIR)/*/*.erl) -pa ebin/
+endif
+
+ifeq ($(wildcard ebin/test),)
+test-build: ERLC_OPTS=$(TEST_ERLC_OPTS)
+test-build: clean deps test-deps
+ @$(MAKE) --no-print-directory app-build test-dir ERLC_OPTS="$(TEST_ERLC_OPTS)"
+ $(gen_verbose) touch ebin/test
+else
+test-build: ERLC_OPTS=$(TEST_ERLC_OPTS)
+test-build: deps test-deps
+ @$(MAKE) --no-print-directory app-build test-dir ERLC_OPTS="$(TEST_ERLC_OPTS)"
+endif
+
+clean:: clean-test-dir
+
+clean-test-dir:
+ifneq ($(wildcard $(TEST_DIR)/*.beam),)
+ $(gen_verbose) rm -f $(TEST_DIR)/*.beam
+endif