Permalink
Browse files

Add ct_log_dir option, skip test dir with no SUITE

When rebar ct executes with its default common test directory of "test",
it will generate a hardcoded "logs" directory in every application with
a test directory present, causing an overlap with eunit's test framework
so even test directories with only eunit tests will be processed by ct.
  • Loading branch information...
1 parent 888bbc8 commit f1d35f9d06e25f292f537217ce7f56034aabd432 @DeadZen DeadZen committed with tuncer Jul 28, 2012
Showing with 21 additions and 10 deletions.
  1. +3 −0 rebar.config.sample
  2. +18 −10 src/rebar_ct.erl
View
@@ -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"}.
View
@@ -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

0 comments on commit f1d35f9

Please sign in to comment.