浏览代码

calculate coverage info as late as possible in ct provider execution

pull/907/head
alisdair sullivan 9 年前
父节点
当前提交
0461729fd9
共有 2 个文件被更改,包括 40 次插入5 次删除
  1. +4
    -3
      src/rebar_prv_common_test.erl
  2. +36
    -2
      test/rebar_ct_SUITE.erl

+ 4
- 3
src/rebar_prv_common_test.erl 查看文件

@ -77,11 +77,12 @@ run_tests(State, Opts) ->
Opts2 = turn_off_auto_compile(Opts1),
?DEBUG("ct_opts ~p", [Opts2]),
{RawOpts, _} = rebar_state:command_parsed_args(State),
ok = maybe_write_coverdata(State),
case proplists:get_value(verbose, RawOpts, false) of
Result = case proplists:get_value(verbose, RawOpts, false) of
true -> run_test_verbose(Opts2);
false -> run_test_quiet(Opts2)
end.
end,
ok = maybe_write_coverdata(State),
Result.
-spec format_error(any()) -> iolist().
format_error({error, Reason}) ->

+ 36
- 2
test/rebar_ct_SUITE.erl 查看文件

@ -39,7 +39,8 @@
cfg_opts/1,
cfg_arbitrary_opts/1,
cfg_test_spec_filtered/1,
cfg_atom_suites/1]).
cfg_atom_suites/1,
cover_compiled/1]).
-include_lib("common_test/include/ct.hrl").
@ -48,6 +49,7 @@ all() -> [{group, basic_app},
{group, dirs_and_suites},
{group, data_dirs},
{group, ct_opts},
{group, cover},
cfg_opts, cfg_arbitrary_opts,
cfg_test_spec_filtered,
cfg_atom_suites].
@ -83,7 +85,8 @@ groups() -> [{basic_app, [], [basic_app_default_dirs,
cmd_abort_if_missing_suites,
cmd_multiply_timetraps,
cmd_scale_timetraps,
cmd_create_priv_dir]}].
cmd_create_priv_dir]},
{cover, [], [cover_compiled]}].
init_per_group(basic_app, Config) ->
C = rebar_test_utils:init_rebar_state(Config, "ct_"),
@ -183,6 +186,18 @@ init_per_group(ct_opts, Config) ->
{ok, State} = rebar_test_utils:run_and_check(C, [], ["as", "test", "lock"], return),
[{result, State}|C];
init_per_group(cover, Config) ->
C = rebar_test_utils:init_rebar_state(Config, "ct_opts"),
AppDir = ?config(apps, C),
Name = rebar_test_utils:create_random_name("ct_opts_"),
Vsn = rebar_test_utils:create_random_vsn(),
rebar_test_utils:create_app(AppDir, Name, Vsn, [kernel, stdlib]),
{ok, State} = rebar_test_utils:run_and_check(C, [], ["as", "test", "lock"], return),
[{result, State}, {name, Name}|C];
init_per_group(_, Config) -> Config.
end_per_group(_Group, _Config) -> ok.
@ -930,6 +945,25 @@ cfg_atom_suites(Config) ->
true = lists:member({suite, ["foo", "bar", "baz"]}, TestOpts).
cover_compiled(Config) ->
State = ?config(result, Config),
Providers = rebar_state:providers(State),
Namespace = rebar_state:namespace(State),
CommandProvider = providers:get_provider(ct, Providers, Namespace),
GetOptSpec = providers:opts(CommandProvider),
{ok, GetOptResult} = getopt:parse(GetOptSpec, ["--cover"]),
NewState = rebar_state:command_parsed_args(State, GetOptResult),
Tests = rebar_prv_common_test:prepare_tests(NewState),
{ok, _} = rebar_prv_common_test:compile(NewState, Tests),
Name = ?config(name, Config),
Mod = list_to_atom(Name),
{file, _} = cover:is_compiled(Mod).
%% helper for generating test data
test_suite(Name) ->
io_lib:format("-module(~ts_SUITE).\n"

正在加载...
取消
保存