From d31e663a67a483b6a740f973f52db41fd01e5861 Mon Sep 17 00:00:00 2001 From: Fred Hebert Date: Fri, 13 Nov 2015 14:13:59 +0000 Subject: Prettify all of common test output. This uses cth_readable to: - silence error_logger output to the shell unless a test fails - silence ct:pal output to the shell unless a test fails I have currently not baked in any way to disable this behaviour, but I figured if it is required, there is time to do it before the final 3.0.0 release. --- src/rebar_prv_common_test.erl | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) (limited to 'src') 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}); -- cgit v1.1