瀏覽代碼

ensure all `src_dirs` and `extra_src_dirs` are handled properly

when running `ct` tests

fixes #513
pull/515/head
alisdair sullivan 10 年之前
父節點
當前提交
087dfdd325
共有 1 個檔案被更改,包括 11 行新增9 行删除
  1. +11
    -9
      src/rebar_prv_common_test.erl

+ 11
- 9
src/rebar_prv_common_test.erl 查看文件

@ -247,7 +247,7 @@ copy_and_compile_test_suites(State, Opts) ->
Dirs = find_suite_dirs(AllSuites), Dirs = find_suite_dirs(AllSuites),
lists:foreach(fun(S) -> lists:foreach(fun(S) ->
NewPath = copy(State, S), NewPath = copy(State, S),
compile_dir(State, S, NewPath)
compile_dir(State, NewPath)
end, Dirs), end, Dirs),
NewSuites = lists:map(fun(S) -> retarget_path(State, S) end, AllSuites), NewSuites = lists:map(fun(S) -> retarget_path(State, S) end, AllSuites),
[{suite, NewSuites}|lists:keydelete(suite, 1, Opts)] [{suite, NewSuites}|lists:keydelete(suite, 1, Opts)]
@ -259,12 +259,12 @@ copy_and_compile_test_dirs(State, Opts) ->
%% dir is a single directory %% dir is a single directory
Dir when is_list(Dir), is_integer(hd(Dir)) -> Dir when is_list(Dir), is_integer(hd(Dir)) ->
NewPath = copy(State, Dir), NewPath = copy(State, Dir),
[{dir, compile_dir(State, Dir, NewPath)}|lists:keydelete(dir, 1, Opts)];
[{dir, compile_dir(State, NewPath)}|lists:keydelete(dir, 1, Opts)];
%% dir is a list of directories %% dir is a list of directories
Dirs when is_list(Dirs) -> Dirs when is_list(Dirs) ->
NewDirs = lists:map(fun(Dir) -> NewDirs = lists:map(fun(Dir) ->
NewPath = copy(State, Dir), NewPath = copy(State, Dir),
compile_dir(State, Dir, NewPath)
compile_dir(State, NewPath)
end, Dirs), end, Dirs),
[{dir, NewDirs}|lists:keydelete(dir, 1, Opts)] [{dir, NewDirs}|lists:keydelete(dir, 1, Opts)]
end. end.
@ -301,11 +301,11 @@ copy(State, Dir) ->
Target Target
end. end.
compile_dir(State, Dir, OutDir) ->
NewState = replace_src_dirs(State, [Dir]),
ok = rebar_erlc_compiler:compile(NewState, rebar_dir:base_dir(State), OutDir),
compile_dir(State, Dir) ->
NewState = replace_src_dirs(State, [filename:absname(Dir)]),
ok = rebar_erlc_compiler:compile(NewState, rebar_dir:base_dir(State), Dir),
ok = maybe_cover_compile(State, Dir), ok = maybe_cover_compile(State, Dir),
OutDir.
Dir.
retarget_path(State, Path) -> retarget_path(State, Path) ->
ProjectApps = rebar_state:project_apps(State), ProjectApps = rebar_state:project_apps(State),
@ -368,8 +368,10 @@ sub_dirs(Path) ->
replace_src_dirs(State, Dirs) -> replace_src_dirs(State, Dirs) ->
%% replace any `src_dirs` with the test dirs %% replace any `src_dirs` with the test dirs
ErlOpts = rebar_state:get(State, erl_opts, []), ErlOpts = rebar_state:get(State, erl_opts, []),
StrippedOpts = filter_src_dirs(ErlOpts),
rebar_state:set(State, erl_opts, [{extra_src_dirs, Dirs}|StrippedOpts]).
StrippedErlOpts = filter_src_dirs(ErlOpts),
State1 = rebar_state:set(State, erl_opts, StrippedErlOpts),
State2 = rebar_state:set(State1, src_dirs, []),
rebar_state:set(State2, extra_src_dirs, Dirs).
filter_src_dirs(ErlOpts) -> filter_src_dirs(ErlOpts) ->
lists:filter(fun({src_dirs, _}) -> false; ({extra_src_dirs, _}) -> false; (_) -> true end, ErlOpts). lists:filter(fun({src_dirs, _}) -> false; ({extra_src_dirs, _}) -> false; (_) -> true end, ErlOpts).

Loading…
取消
儲存