diff options
author | Tristan Sloughter <tristan.sloughter@gmail.com> | 2015-01-09 20:59:11 -0600 |
---|---|---|
committer | Tristan Sloughter <tristan.sloughter@gmail.com> | 2015-01-09 20:59:11 -0600 |
commit | 47269b1a8194e13a5a3de0f829cecaef85bf8419 (patch) | |
tree | cbf21f3ff777d7cbfdeb1bf455042679b8c1a85e | |
parent | de6bba6ff683f80463a5f97d14f29f13bce6ebf1 (diff) | |
parent | 5e270a745632739f0a6af10014b906047cdb31bd (diff) |
Merge pull request #95 from talentdeficit/stable_test_dirs
when compiling `common_test` or `eunit` use the same tmp dir
-rw-r--r-- | src/rebar_prv_common_test.erl | 22 | ||||
-rw-r--r-- | src/rebar_prv_eunit.erl | 22 |
2 files changed, 34 insertions, 10 deletions
diff --git a/src/rebar_prv_common_test.erl b/src/rebar_prv_common_test.erl index 7a52c92..f17134a 100644 --- a/src/rebar_prv_common_test.erl +++ b/src/rebar_prv_common_test.erl @@ -178,13 +178,25 @@ split_ct_dirs(State, RawOpts) -> proplists:get_value(dir, CTOpts, []); Dirs -> split_string(Dirs) end, - OutDir = case proplists:get_value(outdir, RawOpts) of - undefined -> filename:join([rebar_state:dir(State), - ec_file:insecure_mkdtemp()]); - Out -> Out - end, + OutDir = proplists:get_value(outdir, RawOpts, default_test_dir(State)), {InDirs, OutDir}. +default_test_dir(State) -> + Tmp = case erlang:system_info(system_architecture) of + "win32" -> + "./tmp"; + _SysArch -> + "/tmp" + end, + Root = filename:join([rebar_state:dir(State), Tmp]), + Project = filename:basename(rebar_state:dir(State)), + OutDir = filename:join([Root, Project ++ "_rebar3_ct"]), + %% delete the directory if it exists so tests run with clean state + _ = ec_file:remove(OutDir, [recursive]), + %% recreate the directory + ok = filelib:ensure_dir(filename:join([OutDir, "dummy.beam"])), + OutDir. + transform_opts(Opts) -> transform_opts(Opts, []). diff --git a/src/rebar_prv_eunit.erl b/src/rebar_prv_eunit.erl index ee8a235..3bd20fd 100644 --- a/src/rebar_prv_eunit.erl +++ b/src/rebar_prv_eunit.erl @@ -38,11 +38,7 @@ do(State) -> {RawOpts, _} = rebar_state:command_parsed_args(State), Opts = transform_opts(RawOpts, State), TestApps = filter_checkouts(rebar_state:project_apps(State)), - OutDir = case proplists:get_value(outdir, Opts, undefined) of - undefined -> filename:join([rebar_state:dir(State), - ec_file:insecure_mkdtemp()]); - Out -> Out - end, + OutDir = proplists:get_value(outdir, Opts, default_test_dir(State)), ?DEBUG("Compiling EUnit instrumented modules in: ~p", [OutDir]), lists:foreach(fun(App) -> AppDir = rebar_app_info:dir(App), @@ -105,6 +101,22 @@ filter_checkouts([App|Rest], Acc) -> false -> filter_checkouts(Rest, [App|Acc]) end. +default_test_dir(State) -> + Tmp = case erlang:system_info(system_architecture) of + "win32" -> + "./tmp"; + _SysArch -> + "/tmp" + end, + Root = filename:join([rebar_state:dir(State), Tmp]), + Project = filename:basename(rebar_state:dir(State)), + OutDir = filename:join([Root, Project ++ "_rebar3_eunit"]), + %% delete the directory if it exists so tests run with clean state + _ = ec_file:remove(OutDir, [recursive]), + %% recreate the directory + ok = filelib:ensure_dir(filename:join([OutDir, "dummy.beam"])), + OutDir. + test_state(State, TmpDir) -> ErlOpts = rebar_state:get(State, eunit_compile_opts, []) ++ rebar_utils:erl_opts(State), |