diff options
author | Loïc Hoguin <[email protected]> | 2015-01-10 18:25:22 +0100 |
---|---|---|
committer | Loïc Hoguin <[email protected]> | 2015-01-10 18:41:44 +0100 |
commit | 7ee4e7958acf0f0956bd64023ecb1731b2824b5e (patch) | |
tree | bdeee9ec023b237d02cff28d9a33e6589877cb4f /core/test.mk | |
parent | 098aa65854199fe1f58e4bd870f948bdd597741a (diff) | |
download | erlang.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.mk | 44 |
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 |