From e5270da3d751605fbb6fbcdfd12ad0d76e1fcfbd Mon Sep 17 00:00:00 2001 From: alisdair sullivan Date: Wed, 7 Jan 2015 17:59:07 -0800 Subject: preserve rebar path when running `ct` and `eunit` tests --- src/rebar_prv_common_test.erl | 4 +++- src/rebar_prv_eunit.erl | 7 +++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/rebar_prv_common_test.erl b/src/rebar_prv_common_test.erl index ceab16c..65a09ef 100644 --- a/src/rebar_prv_common_test.erl +++ b/src/rebar_prv_common_test.erl @@ -41,7 +41,7 @@ do(State) -> OutDir = case proplists:get_value(outdir, RawOpts, undefined) of undefined -> filename:join([rebar_state:dir(State), ec_file:insecure_mkdtemp()]); - Path -> Path + Out -> Out end, InDir = proplists:get_value(dir, Opts, []), ok = create_dirs(Opts), @@ -56,9 +56,11 @@ do(State) -> TestState = first_files(test_opts(S, InDir, OutDir)), ok = rebar_erlc_compiler:compile(TestState, AppDir) end, ProjectApps), + Path = code:get_path(), true = code:add_patha(OutDir), CTOpts = resolve_ct_opts(State, Opts), Result = handle_results(ct:run_test([{dir, OutDir}] ++ CTOpts)), + true = code:set_path(Path), case Result of {error, Reason} -> {error, {?MODULE, Reason}}; diff --git a/src/rebar_prv_eunit.erl b/src/rebar_prv_eunit.erl index cb0e850..7db11a3 100644 --- a/src/rebar_prv_eunit.erl +++ b/src/rebar_prv_eunit.erl @@ -41,7 +41,7 @@ do(State) -> OutDir = case proplists:get_value(outdir, Opts, undefined) of undefined -> filename:join([rebar_state:dir(State), ec_file:insecure_mkdtemp()]); - Path -> Path + Out -> Out end, ?DEBUG("Compiling EUnit instrumented modules in: ~p", [OutDir]), lists:foreach(fun(App) -> @@ -54,11 +54,14 @@ do(State) -> TestState = first_files(test_opts(S, OutDir)), ok = rebar_erlc_compiler:compile(TestState, AppDir) end, ProjectApps), + Path = code:get_path(), true = code:add_patha(OutDir), EUnitOpts = resolve_eunit_opts(State, Opts), AppsToTest = [{application, erlang:binary_to_atom(rebar_app_info:name(App), unicode)} || App <- ProjectApps], - case handle_results(eunit:test(AppsToTest, EUnitOpts)) of + Result = eunit:test(AppsToTest, EUnitOpts), + true = code:set_path(Path), + case handle_results(Result) of {error, Reason} -> {error, {?MODULE, Reason}}; ok -> -- cgit v1.1