summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--rebar.config.sample3
-rw-r--r--src/rebar_ct.erl28
2 files changed, 21 insertions, 10 deletions
diff --git a/rebar.config.sample b/rebar.config.sample
index a6f5bf7..4243924 100644
--- a/rebar.config.sample
+++ b/rebar.config.sample
@@ -86,6 +86,9 @@
%% Override the default "test" directory in which SUITEs are located
{ct_dir, "itest"}.
+%% Override the default "logs" directory in which SUITEs are logged
+{ct_log_dir, "test/logs"}.
+
%% Option to pass extra parameters when launching Common Test
{ct_extra_params, "-boot start_sasl -s myapp"}.
diff --git a/src/rebar_ct.erl b/src/rebar_ct.erl
index d2f45c3..50efeb1 100644
--- a/src/rebar_ct.erl
+++ b/src/rebar_ct.erl
@@ -47,23 +47,31 @@
ct(Config, File) ->
TestDir = rebar_config:get_local(Config, ct_dir, "test"),
- run_test_if_present(TestDir, Config, File).
+ LogDir = rebar_config:get_local(Config, ct_log_dir, "logs"),
+ run_test_if_present(TestDir, LogDir, Config, File).
%% ===================================================================
%% Internal functions
%% ===================================================================
-run_test_if_present(TestDir, Config, File) ->
+run_test_if_present(TestDir, LogDir, Config, File) ->
case filelib:is_dir(TestDir) of
false ->
?WARN("~s directory not present - skipping\n", [TestDir]),
ok;
true ->
- run_test(TestDir, Config, File)
+ case filelib:wildcard(TestDir ++ "/*_SUITE.erl") of
+ [] ->
+ ?WARN("~s directory present, but no common_test"
+ ++ " SUITES - skipping\n", [TestDir]),
+ ok;
+ _ ->
+ run_test(TestDir, LogDir, Config, File)
+ end
end.
-run_test(TestDir, Config, _File) ->
- {Cmd, RawLog} = make_cmd(TestDir, Config),
- clear_log(RawLog),
+run_test(TestDir, LogDir, Config, _File) ->
+ {Cmd, RawLog} = make_cmd(TestDir, LogDir, Config),
+ clear_log(LogDir, RawLog),
case rebar_config:is_verbose(Config) of
false ->
Output = " >> " ++ RawLog ++ " 2>&1";
@@ -75,8 +83,8 @@ run_test(TestDir, Config, _File) ->
check_log(Config, RawLog).
-clear_log(RawLog) ->
- case filelib:ensure_dir("logs/index.html") of
+clear_log(LogDir, RawLog) ->
+ case filelib:ensure_dir(filename:join(LogDir, "index.html")) of
ok ->
NowStr = rebar_utils:now_str(),
LogHeader = "--- Test run on " ++ NowStr ++ " ---\n",
@@ -120,9 +128,9 @@ show_log(Config, RawLog) ->
ok
end.
-make_cmd(TestDir, Config) ->
+make_cmd(TestDir, RawLogDir, Config) ->
Cwd = rebar_utils:get_cwd(),
- LogDir = filename:join(Cwd, "logs"),
+ LogDir = filename:join(Cwd, RawLogDir),
EbinDir = filename:absname(filename:join(Cwd, "ebin")),
IncludeDir = filename:join(Cwd, "include"),
Include = case filelib:is_dir(IncludeDir) of