aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--doc/src/guide/common_test.asciidoc6
-rw-r--r--plugins/ct.mk9
-rw-r--r--test/plugin_ct.mk25
3 files changed, 35 insertions, 5 deletions
diff --git a/doc/src/guide/common_test.asciidoc b/doc/src/guide/common_test.asciidoc
index aec8747..f8f0de3 100644
--- a/doc/src/guide/common_test.asciidoc
+++ b/doc/src/guide/common_test.asciidoc
@@ -35,6 +35,12 @@ is `http`:
[source,make]
CT_SUITES = http ws
+The `CT_LOGS_DIR` variable can be used to set where HTML
+log files are to be written. This defaults to 'logs/'.
+
+[source,make]
+CT_LOGS_DIR = ct_output_log_dir
+
=== Usage
To run all tests (including Common Test):
diff --git a/plugins/ct.mk b/plugins/ct.mk
index 71a61de..9276daf 100644
--- a/plugins/ct.mk
+++ b/plugins/ct.mk
@@ -13,6 +13,7 @@ CT_SUITES := $(sort $(subst _SUITE.erl,,$(notdir $(call core_find,$(TEST_DIR)/,*
endif
endif
CT_SUITES ?=
+CT_LOGS_DIR ?= $(CURDIR)/logs
# Core targets.
@@ -35,13 +36,13 @@ CT_RUN = ct_run \
-noinput \
-pa $(CURDIR)/ebin $(DEPS_DIR)/*/ebin $(APPS_DIR)/*/ebin $(TEST_DIR) \
-dir $(TEST_DIR) \
- -logdir $(CURDIR)/logs
+ -logdir $(CT_LOGS_DIR)
ifeq ($(CT_SUITES),)
ct: $(if $(IS_APP),,apps-ct)
else
ct: test-build $(if $(IS_APP),,apps-ct)
- $(verbose) mkdir -p $(CURDIR)/logs/
+ $(verbose) mkdir -p $(CT_LOGS_DIR)
$(gen_verbose) $(CT_RUN) -sname ct_$(PROJECT) -suite $(addsuffix _SUITE,$(CT_SUITES)) $(CT_OPTS)
endif
@@ -69,11 +70,11 @@ endif
define ct_suite_target
ct-$(1): test-build
- $(verbose) mkdir -p $(CURDIR)/logs/
+ $(verbose) mkdir -p $(CT_LOGS_DIR)
$(gen_verbose) $(CT_RUN) -sname ct_$(PROJECT) -suite $(addsuffix _SUITE,$(1)) $(CT_EXTRA) $(CT_OPTS)
endef
$(foreach test,$(CT_SUITES),$(eval $(call ct_suite_target,$(test))))
distclean-ct:
- $(gen_verbose) rm -rf $(CURDIR)/logs/
+ $(gen_verbose) rm -rf $(CT_LOGS_DIR)
diff --git a/test/plugin_ct.mk b/test/plugin_ct.mk
index c32fa36..50410c9 100644
--- a/test/plugin_ct.mk
+++ b/test/plugin_ct.mk
@@ -1,6 +1,6 @@
# Common Test plugin.
-CT_CASES = all apps-only case check group opts suite tests
+CT_CASES = all apps-only case check group logs-dir opts suite tests
CT_TARGETS = $(addprefix ct-,$(CT_CASES))
.PHONY: ct $(CT_TARGETS)
@@ -182,6 +182,29 @@ ct-opts: build clean
$i "Check that Common Test uses options from CT_OPTS"
$t grep -q hello_ct_opts $(APP)/logs/index.html
+ct-logs-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 "Set CT_OPTS in the Makefile"
+ $t perl -ni.bak -e 'print;if ($$.==1) {print "CT_LOGS_DIR = custom_dir\n"}' $(APP)/Makefile
+
+ $i "Generate a Common Test suite"
+ $t mkdir $(APP)/test
+ $t printf "%s\n" \
+ "-module($(APP)_SUITE)." \
+ "-export([all/0, ok/1])." \
+ "all() -> [ok]." \
+ "ok(_) -> ok." > $(APP)/test/$(APP)_SUITE.erl
+
+ $i "Check that Common Test log in right place"
+ $t test ! -e $(APP)/custom_dir/index.html
+ $t $(MAKE) -C $(APP) ct $v
+ $t test -f $(APP)/custom_dir/index.html
+
ct-suite: build clean
$i "Bootstrap a new OTP application named $(APP)"