diff options
| -rw-r--r-- | src/rebar_prv_common_test.erl | 2 | ||||
| -rw-r--r-- | src/rebar_prv_eunit.erl | 2 | ||||
| -rw-r--r-- | src/rebar_utils.erl | 18 | 
3 files changed, 12 insertions, 10 deletions
| diff --git a/src/rebar_prv_common_test.erl b/src/rebar_prv_common_test.erl index 1f4c02d..32d4433 100644 --- a/src/rebar_prv_common_test.erl +++ b/src/rebar_prv_common_test.erl @@ -38,7 +38,7 @@ init(State) ->  -spec do(rebar_state:t()) -> {ok, rebar_state:t()} | {error, string()}.  do(State) ->      ?INFO("Running Common Test suites...", []), -    rebar_utils:update_code(rebar_state:code_paths(State, all_deps)), +    rebar_utils:update_code(rebar_state:code_paths(State, all_deps), [soft_purge]),      %% Run ct provider prehooks      Providers = rebar_state:providers(State), diff --git a/src/rebar_prv_eunit.erl b/src/rebar_prv_eunit.erl index 0cdc20b..d5612e8 100644 --- a/src/rebar_prv_eunit.erl +++ b/src/rebar_prv_eunit.erl @@ -49,7 +49,7 @@ do(State) ->  do(State, Tests) ->      ?INFO("Performing EUnit tests...", []), -    rebar_utils:update_code(rebar_state:code_paths(State, all_deps)), +    rebar_utils:update_code(rebar_state:code_paths(State, all_deps), [soft_purge]),      %% Run eunit provider prehooks      Providers = rebar_state:providers(State), diff --git a/src/rebar_utils.erl b/src/rebar_utils.erl index d00a46f..ea60e42 100644 --- a/src/rebar_utils.erl +++ b/src/rebar_utils.erl @@ -47,6 +47,7 @@           deprecated/4,           indent/1,           update_code/1, +         update_code/2,           remove_from_code_path/1,           cleanup_code_path/1,           args_to_tasks/1, @@ -644,7 +645,9 @@ indent(Amount) when erlang:is_integer(Amount) ->  %% Replace code paths with new paths for existing apps and  %% purge code of the old modules from those apps. -update_code(Paths) -> +update_code(Paths) -> update_code(Paths, []). + +update_code(Paths, Opts) ->      lists:foreach(fun(Path) ->                            Name = filename:basename(Path, "/ebin"),                            App = list_to_atom(Name), @@ -654,19 +657,18 @@ update_code(Paths) ->                                    code:add_patha(Path),                                    ok;                                {ok, Modules} -> -                                  %% stick rebar ebin dir before purging to prevent -                                  %% inadvertent termination -                                  RebarBin = code:lib_dir(rebar, ebin), -                                  ok = code:stick_dir(RebarBin),                                    %% replace_path causes problems when running                                    %% tests in projects like erlware_commons that rebar3                                    %% also includes                                    %code:replace_path(App, Path),                                    code:del_path(App),                                    code:add_patha(Path), -                                  [begin code:purge(M), code:delete(M) end || M <- Modules], -                                  %% unstick rebar dir -                                  ok = code:unstick_dir(RebarBin) +                                  case lists:member(soft_purge, Opts) of +                                      true  -> +                                          [begin code:soft_purge(M), code:delete(M) end || M <- Modules]; +                                      false -> +                                          [begin code:purge(M), code:delete(M) end || M <- Modules] +                                  end                            end                    end, Paths). | 
