Browse Source

Merge pull request #904 from talentdeficit/soft_purge_opt

add an option to soft purge rather than purge old code
pull/978/head
Tristan Sloughter 9 years ago
parent
commit
d119cfcf25
3 changed files with 12 additions and 10 deletions
  1. +1
    -1
      src/rebar_prv_common_test.erl
  2. +1
    -1
      src/rebar_prv_eunit.erl
  3. +10
    -8
      src/rebar_utils.erl

+ 1
- 1
src/rebar_prv_common_test.erl View File

@ -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),

+ 1
- 1
src/rebar_prv_eunit.erl View File

@ -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),

+ 10
- 8
src/rebar_utils.erl View File

@ -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).

Loading…
Cancel
Save