diff options
-rw-r--r-- | src/rebar_prv_cover.erl | 30 |
1 files changed, 20 insertions, 10 deletions
diff --git a/src/rebar_prv_cover.erl b/src/rebar_prv_cover.erl index 45d5b81..13c12d1 100644 --- a/src/rebar_prv_cover.erl +++ b/src/rebar_prv_cover.erl @@ -14,7 +14,7 @@ -include("rebar.hrl"). -define(PROVIDER, cover). --define(DEPS, []). +-define(DEPS, [app_discovery]). %% =================================================================== %% Public API @@ -136,14 +136,25 @@ import(CoverData) -> end. analysis(State, Task) -> + OldPath = code:get_path(), + ok = restore_cover_paths(State), Mods = cover:imported_modules(), - lists:map( - fun(Mod) -> - {ok, Answer} = cover:analyze(Mod, coverage, line), - {ok, File} = analyze_to_file(Mod, State, Task), - {Mod, process(Answer), File} - end, - Mods). + Analysis = lists:map(fun(Mod) -> + {ok, Answer} = cover:analyze(Mod, coverage, line), + {ok, File} = analyze_to_file(Mod, State, Task), + {Mod, process(Answer), File} + end, + Mods), + true = code:set_path(OldPath), + Analysis. + +restore_cover_paths(State) -> + lists:foreach(fun(App) -> + AppDir = rebar_app_info:out_dir(App), + _ = code:add_path(filename:join([AppDir, "ebin"])) + end, rebar_state:project_apps(State)), + _ = code:add_path(filename:join([rebar_dir:base_dir(State), "ebin"])), + ok. analyze_to_file(Mod, State, Task) -> CoverDir = cover_dir(State), @@ -320,8 +331,7 @@ write_coverdata(State, Task) -> ExportFile = filename:join([DataDir, atom_to_list(Task) ++ ".coverdata"]), case cover:export(ExportFile) of ok -> - ?DEBUG("Cover data written to ~p.", [ExportFile]), - ok; + ?DEBUG("Cover data written to ~p.", [ExportFile]); {error, Reason} -> ?WARN("Cover data export failed: ~p", [Reason]) end. |