Browse Source

Merge pull request #917 from ferd/ct-readable

Prettify all of common test output.
pull/893/head
Fred Hebert 9 years ago
parent
commit
0b01c9fcf7
4 changed files with 39 additions and 3 deletions
  1. +2
    -1
      rebar.config
  2. +1
    -0
      rebar.lock
  3. +1
    -0
      src/rebar.app.src
  4. +35
    -2
      src/rebar_prv_common_test.erl

+ 2
- 1
rebar.config View File

@ -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.1"}]}.
{escript_name, rebar3}.
{escript_emu_args, "%%! +sbtu +A0\n"}.

+ 1
- 0
rebar.lock View File

@ -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.1">>},0},
{<<"erlware_commons">>,{pkg,<<"erlware_commons">>,<<"0.16.0">>},0},
{<<"getopt">>,{pkg,<<"getopt">>,<<"0.8.2">>},0},
{<<"providers">>,{pkg,<<"providers">>,<<"1.5.0">>},0},

+ 1
- 0
src/rebar.app.src View File

@ -25,6 +25,7 @@
bbmustache,
ssl_verify_hostname,
certifi,
cth_readable,
relx,
inets]},
{env, [

+ 35
- 2
src/rebar_prv_common_test.erl View File

@ -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), State).
filter_opts({test_spec, _}) ->
?WARN("Test specs not supported", []),
@ -170,6 +170,19 @@ filter_opts({suite, Suites}) ->
Suites)}};
filter_opts(_) -> true.
add_hooks(Opts, State) ->
case {readable(State), lists:keyfind(ct_hooks, 1, Opts)} of
{false, _} ->
Opts;
{true, false} ->
[{ct_hooks, [cth_readable_failonly, cth_readable_shell]} | Opts];
{true, {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 +262,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, State) ++ 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 +272,23 @@ inject(Opts, State) ->
Opts,
[{erl_opts, NewErlOpts}, {erl_first_files, NewFirstFiles}]).
add_transforms(CTOpts, State) ->
case readable(State) of
true ->
ReadableTransform = [{parse_transform, cth_readable_transform}],
(CTOpts -- ReadableTransform) ++ ReadableTransform;
false ->
CTOpts
end.
readable(State) ->
{RawOpts, _} = rebar_state:command_parsed_args(State),
case proplists:get_value(readable, RawOpts) of
true -> true;
false -> false;
undefined -> rebar_state:get(State, ct_readable, true)
end.
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});
@ -490,6 +520,7 @@ ct_opts(_State) ->
{multiply_timetraps, undefined, "multiply_timetraps", integer, help(multiple_timetraps)}, %% Integer
{scale_timetraps, undefined, "scale_timetraps", boolean, help(scale_timetraps)},
{create_priv_dir, undefined, "create_priv_dir", string, help(create_priv_dir)},
{readable, undefined, "readable", boolean, help(readable)},
{verbose, $v, "verbose", boolean, help(verbose)}
].
@ -539,6 +570,8 @@ help(scale_timetraps) ->
"Scale timetraps";
help(create_priv_dir) ->
"Create priv dir (auto_per_run | auto_per_tc | manual_per_tc)";
help(readable) ->
"Shows test case names and only displays logs to shell on failures";
help(verbose) ->
"Verbose output";
help(_) ->

Loading…
Cancel
Save