summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--rebar.config3
-rw-r--r--rebar.lock1
-rw-r--r--src/rebar_prv_common_test.erl21
3 files changed, 22 insertions, 3 deletions
diff --git a/rebar.config b/rebar.config
index c7bf381..31d65df 100644
--- a/rebar.config
+++ b/rebar.config
@@ -8,7 +8,8 @@
{getopt, "0.8.2"},
{bbmustache, "1.0.4"},
{relx, "3.8.0"},
- {cf, "0.1.3"}]}.
+ {cf, "0.1.3"},
+ {cth_readable, "1.0.0"}]}.
{escript_name, rebar3}.
{escript_emu_args, "%%! +sbtu +A0\n"}.
diff --git a/rebar.lock b/rebar.lock
index 88685e2..36d4802 100644
--- a/rebar.lock
+++ b/rebar.lock
@@ -1,6 +1,7 @@
[{<<"bbmustache">>,{pkg,<<"bbmustache">>,<<"1.0.4">>},0},
{<<"certifi">>,{pkg,<<"certifi">>,<<"0.1.1">>},0},
{<<"cf">>,{pkg,<<"cf">>,<<"0.1.3">>},0},
+ {<<"cth_readable">>,{pkg,<<"cth_readable">>,<<"1.0.0">>},0},
{<<"erlware_commons">>,{pkg,<<"erlware_commons">>,<<"0.16.0">>},0},
{<<"getopt">>,{pkg,<<"getopt">>,<<"0.8.2">>},0},
{<<"providers">>,{pkg,<<"providers">>,<<"1.5.0">>},0},
diff --git a/src/rebar_prv_common_test.erl b/src/rebar_prv_common_test.erl
index 977a5f6..525ddaf 100644
--- a/src/rebar_prv_common_test.erl
+++ b/src/rebar_prv_common_test.erl
@@ -152,7 +152,7 @@ split_string(String) ->
cfgopts(State) ->
Opts = rebar_state:get(State, ct_opts, []),
- rebar_utils:filtermap(fun filter_opts/1, Opts).
+ add_hooks(rebar_utils:filtermap(fun filter_opts/1, Opts)).
filter_opts({test_spec, _}) ->
?WARN("Test specs not supported", []),
@@ -170,6 +170,18 @@ filter_opts({suite, Suites}) ->
Suites)}};
filter_opts(_) -> true.
+add_hooks(Opts) ->
+ %% cth_readable hooks
+ case lists:keyfind(ct_hooks, 1, Opts) of
+ false ->
+ [{ct_hooks, [cth_readable_failonly, cth_readable_shell]} | Opts];
+ {ct_hooks, Hooks} ->
+ %% Make sure hooks are there once only.
+ ReadableHooks = [cth_readable_failonly, cth_readable_shell],
+ NewHooks = (Hooks -- ReadableHooks) ++ ReadableHooks,
+ lists:keyreplace(ct_hooks, 1, Opts, {ct_hooks, NewHooks})
+ end.
+
select_tests(State, ProjectApps, CmdOpts, CfgOpts) ->
FixedOpts = lists:filter(fun({_, _}) -> true; (V) -> ?WARN("`~p` is not a valid option for `ct_opts`", [V]) end, CfgOpts),
Merged = lists:ukeymerge(1,
@@ -249,7 +261,7 @@ inject(Opts, State) ->
%% append `ct_compile_opts` to app defined `erl_opts`
ErlOpts = rebar_opts:get(Opts, erl_opts, []),
CTOpts = rebar_state:get(State, ct_compile_opts, []),
- NewErlOpts = CTOpts ++ ErlOpts,
+ NewErlOpts = add_transforms(CTOpts) ++ ErlOpts,
%% append `ct_first_files` to app defined `erl_first_files`
FirstFiles = rebar_opts:get(Opts, erl_first_files, []),
CTFirstFiles = rebar_state:get(State, ct_first_files, []),
@@ -259,6 +271,11 @@ inject(Opts, State) ->
Opts,
[{erl_opts, NewErlOpts}, {erl_first_files, NewFirstFiles}]).
+add_transforms(CTOpts) ->
+ ReadableTransform = [{parse_transform, cth_readable_transform}],
+ (CTOpts -- ReadableTransform) ++ ReadableTransform.
+
+
test_dirs(State, Apps, Opts) ->
case {proplists:get_value(suite, Opts), proplists:get_value(dir, Opts)} of
{Suites, undefined} -> set_compile_dirs(State, Apps, {suite, Suites});