summaryrefslogtreecommitdiff
path: root/src/rebar_ct.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/rebar_ct.erl')
-rw-r--r--src/rebar_ct.erl43
1 files changed, 25 insertions, 18 deletions
diff --git a/src/rebar_ct.erl b/src/rebar_ct.erl
index f3ed29f..c075e8c 100644
--- a/src/rebar_ct.erl
+++ b/src/rebar_ct.erl
@@ -210,7 +210,7 @@ make_cmd(TestDir, RawLogDir, Config) ->
CodeDirs = [io_lib:format("\"~s\"", [Dir]) ||
Dir <- [EbinDir|NonLibCodeDirs]],
CodePathString = string:join(CodeDirs, " "),
- Cmd = case get_ct_specs(Cwd) of
+ Cmd = case get_ct_specs(Config, Cwd) of
undefined ->
?FMT("~s"
" -pa ~s"
@@ -260,8 +260,8 @@ build_name(Config) ->
get_extra_params(Config) ->
rebar_config:get_local(Config, ct_extra_params, "").
-get_ct_specs(Cwd) ->
- case collect_glob(Cwd, ".*\.test\.spec\$") of
+get_ct_specs(Config, Cwd) ->
+ case collect_glob(Config, Cwd, ".*\.test\.spec\$") of
[] -> undefined;
[Spec] ->
" -spec " ++ Spec;
@@ -275,31 +275,38 @@ get_cover_config(Config, Cwd) ->
false ->
"";
true ->
- case collect_glob(Cwd, ".*cover\.spec\$") of
+ case collect_glob(Config, Cwd, ".*cover\.spec\$") of
[] ->
?DEBUG("No cover spec found: ~s~n", [Cwd]),
"";
[Spec] ->
- ?DEBUG("Found cover file ~w~n", [Spec]),
+ ?DEBUG("Found cover file ~s~n", [Spec]),
" -cover " ++ Spec;
Specs ->
?ABORT("Multiple cover specs found: ~p~n", [Specs])
end
end.
-collect_glob(Cwd, Glob) ->
- filelib:fold_files(Cwd, Glob, true, fun collect_files/2, []).
-
-collect_files(F, Acc) ->
- %% Ignore any specs under the deps/ directory. Do this pulling
- %% the dirname off the the F and then splitting it into a list.
- Parts = filename:split(filename:dirname(F)),
- case lists:member("deps", Parts) of
- true ->
- Acc; % There is a directory named "deps" in path
- false ->
- [F | Acc] % No "deps" directory in path
- end.
+collect_glob(Config, Cwd, Glob) ->
+ {true, Deps} = rebar_deps:get_deps_dir(Config),
+ CwdParts = filename:split(Cwd),
+ filelib:fold_files(Cwd, Glob, true, fun(F, Acc) ->
+ %% Ignore any specs under the deps/ directory. Do this pulling
+ %% the dirname off the F and then splitting it into a list.
+ Parts = filename:split(filename:dirname(F)),
+ Parts2 = remove_common_prefix(Parts, CwdParts),
+ case lists:member(Deps, Parts2) of
+ true ->
+ Acc; % There is a directory named "deps" in path
+ false ->
+ [F | Acc] % No "deps" directory in path
+ end
+ end, []).
+
+remove_common_prefix([H1|T1], [H1|T2]) ->
+ remove_common_prefix(T1, T2);
+remove_common_prefix(L1, _) ->
+ L1.
get_ct_config_file(TestDir) ->
Config = filename:join(TestDir, "test.config"),