Selaa lähdekoodia

move test profile bootstrap into core

pull/896/head
alisdair sullivan 9 vuotta sitten
vanhempi
commit
3fc51b912c
2 muutettua tiedostoa jossa 23 lisäystä ja 21 poistoa
  1. +22
    -1
      src/rebar3.erl
  2. +1
    -20
      src/rebar_prv_eunit.erl

+ 22
- 1
src/rebar3.erl Näytä tiedosto

@ -96,7 +96,7 @@ run(RawArgs) ->
run_aux(BaseState2, RawArgs). run_aux(BaseState2, RawArgs).
run_aux(State, RawArgs) -> run_aux(State, RawArgs) ->
State2 = case os:getenv("REBAR_PROFILE") of
State1 = case os:getenv("REBAR_PROFILE") of
false -> false ->
State; State;
"" -> "" ->
@ -105,6 +105,9 @@ run_aux(State, RawArgs) ->
rebar_state:apply_profiles(State, [list_to_atom(Profile)]) rebar_state:apply_profiles(State, [list_to_atom(Profile)])
end, end,
%% bootstrap test profile
State2 = rebar_state:add_to_profile(State1, test, test_state(State1)),
%% Process each command, resetting any state between each one %% Process each command, resetting any state between each one
BaseDir = rebar_state:get(State, base_dir, ?DEFAULT_BASE_DIR), BaseDir = rebar_state:get(State, base_dir, ?DEFAULT_BASE_DIR),
State3 = rebar_state:set(State2, base_dir, State3 = rebar_state:set(State2, base_dir,
@ -319,3 +322,21 @@ state_from_global_config(Config, GlobalConfigFile) ->
GlobalConfig2 = rebar_state:set(GlobalConfig, plugins, []), GlobalConfig2 = rebar_state:set(GlobalConfig, plugins, []),
GlobalConfig3 = rebar_state:set(GlobalConfig2, {plugins, global}, rebar_state:get(GlobalConfigThrowAway, plugins, [])), GlobalConfig3 = rebar_state:set(GlobalConfig2, {plugins, global}, rebar_state:get(GlobalConfigThrowAway, plugins, [])),
rebar_state:providers(rebar_state:new(GlobalConfig3, Config), GlobalPlugins). rebar_state:providers(rebar_state:new(GlobalConfig3, Config), GlobalPlugins).
test_state(State) ->
ErlOpts = rebar_state:get(State, erl_opts, []),
TestOpts = safe_define_test_macro(ErlOpts),
[{extra_src_dirs, ["test"]}, {erl_opts, TestOpts}].
safe_define_test_macro(Opts) ->
%% defining a compile macro twice results in an exception so
%% make sure 'TEST' is only defined once
case test_defined(Opts) of
true -> [];
false -> [{d, 'TEST'}]
end.
test_defined([{d, 'TEST'}|_]) -> true;
test_defined([{d, 'TEST', true}|_]) -> true;
test_defined([_|Rest]) -> test_defined(Rest);
test_defined([]) -> false.

+ 1
- 20
src/rebar_prv_eunit.erl Näytä tiedosto

@ -34,8 +34,7 @@ init(State) ->
{opts, eunit_opts(State)}, {opts, eunit_opts(State)},
{profiles, [test]}]), {profiles, [test]}]),
State1 = rebar_state:add_provider(State, Provider), State1 = rebar_state:add_provider(State, Provider),
State2 = rebar_state:add_to_profile(State1, test, test_state(State1)),
{ok, State2}.
{ok, State1}.
-spec do(rebar_state:t()) -> {ok, rebar_state:t()} | {error, string()}. -spec do(rebar_state:t()) -> {ok, rebar_state:t()} | {error, string()}.
do(State) -> do(State) ->
@ -103,19 +102,6 @@ format_error({error, Error}) ->
%% Internal functions %% Internal functions
%% =================================================================== %% ===================================================================
test_state(State) ->
ErlOpts = rebar_state:get(State, erl_opts, []),
TestOpts = safe_define_test_macro(ErlOpts),
[{extra_src_dirs, ["test"]}, {erl_opts, TestOpts}].
safe_define_test_macro(Opts) ->
%% defining a compile macro twice results in an exception so
%% make sure 'TEST' is only defined once
case test_defined(Opts) of
true -> Opts;
false -> [{d, 'TEST'}] ++ Opts
end.
compile(State, {ok, Tests}) -> compile(State, {ok, Tests}) ->
%% inject `eunit_first_files`, `eunit_compile_opts` and any %% inject `eunit_first_files`, `eunit_compile_opts` and any
%% directories required by tests into the applications %% directories required by tests into the applications
@ -191,11 +177,6 @@ inject_test_dir(Opts, Dir) ->
ExtraSrcDirs = rebar_opts:get(Opts, extra_src_dirs, []), ExtraSrcDirs = rebar_opts:get(Opts, extra_src_dirs, []),
rebar_opts:set(Opts, extra_src_dirs, ExtraSrcDirs ++ [Dir]). rebar_opts:set(Opts, extra_src_dirs, ExtraSrcDirs ++ [Dir]).
test_defined([{d, 'TEST'}|_]) -> true;
test_defined([{d, 'TEST', true}|_]) -> true;
test_defined([_|Rest]) -> test_defined(Rest);
test_defined([]) -> false.
prepare_tests(State) -> prepare_tests(State) ->
%% parse and translate command line tests %% parse and translate command line tests
CmdTests = resolve_tests(State), CmdTests = resolve_tests(State),

Ladataan…
Peruuta
Tallenna