mirror of
https://github.com/correl/rebar.git
synced 2024-12-18 03:00:17 +00:00
Fix cover crash if src_dirs is not default
Make sure files from erl_opts->src_dirs are copied to .eunit for cover inspection. Without this patch cover failed to find source files which were in src_dirs, and threw the following exception: ERROR: eunit failed while processing /path/to/project: {'EXIT',{{badmatch,{error,no_source_code_found}}, [{rebar_eunit,'-cover_analyze/3-fun-0-',1, [{file,"src/rebar_eunit.erl"},{line,280}]}, {lists,foreach,2,[{file,"lists.erl"},{line,1262}]}, {rebar_eunit,cover_analyze,3, [{file,"src/rebar_eunit.erl"},{line,279}]}, {rebar_eunit,eunit,2,[{file,"src/rebar_eunit.erl"},{line,140}]}, {rebar_core,run_modules,4,[{file,"src/rebar_core.erl"},{line,425}]}, {rebar_core,execute,5,[{file,"src/rebar_core.erl"},{line,359}]}, {rebar_core,process_dir0,6,[{file,"src/rebar_core.erl"},{line,223}]}, {rebar_core,process_dir,4, [{file,"src/rebar_core.erl"},{line,130}]}]}} Now all source files are copied to .eunit.
This commit is contained in:
parent
394c0f43f8
commit
ad2f30ccb9
1 changed files with 11 additions and 2 deletions
|
@ -84,8 +84,17 @@ eunit(Config, _AppFile) ->
|
||||||
|
|
||||||
%% Copy source files to eunit dir for cover in case they are not directly
|
%% Copy source files to eunit dir for cover in case they are not directly
|
||||||
%% in src but in a subdirectory of src. Cover only looks in cwd and ../src
|
%% in src but in a subdirectory of src. Cover only looks in cwd and ../src
|
||||||
%% for source files.
|
%% for source files. Also copy files from src_dirs.
|
||||||
SrcErls = rebar_utils:find_files("src", ".*\\.erl\$"),
|
ErlOpts = rebar_utils:erl_opts(Config),
|
||||||
|
|
||||||
|
SrcErls = lists:foldl(
|
||||||
|
fun(Dir, Acc) ->
|
||||||
|
lists:append(Acc, rebar_utils:find_files(Dir, ".*\\.erl\$"))
|
||||||
|
end,
|
||||||
|
[],
|
||||||
|
rebar_utils:src_dirs(proplists:append_values(src_dirs, ErlOpts))
|
||||||
|
),
|
||||||
|
?DEBUG("SrcErls: ~s\n", [SrcErls]),
|
||||||
|
|
||||||
%% If it is not the first time rebar eunit is executed, there will be source
|
%% If it is not the first time rebar eunit is executed, there will be source
|
||||||
%% files already present in ?EUNIT_DIR. Since some SCMs (like Perforce) set
|
%% files already present in ?EUNIT_DIR. Since some SCMs (like Perforce) set
|
||||||
|
|
Loading…
Reference in a new issue