mirror of
https://github.com/correl/rebar.git
synced 2024-12-18 03:00:17 +00:00
ct: skip instead of halt on missing/unknown suite
This allows `rebar ct suites=abc` to consider all suites when you have a rebar setup with multiple sub_dirs. Previously, rebar halted after it could not find the suite in the first dir. But the suite might be present in another dir (when sub_dirs contains multiple dirs). This commit makes it so instead of halting, it prints a warning and continues with looking for the suite in the other `sub_dir`s. Note -- This uses try/catch to cause the test to be skipped because otherwise I needed to adjust the return values of 4 functions, the code path is pretty deeply nested here. Otherwise the whole call chain needed to be adjusted for this return value: `run_test -> make_cmd -> get_suites -> find_suite_path` IMHO, I think for exceptional cases like this it is fine to use throw; specially since only the {skip} is catched and nothing else.
This commit is contained in:
parent
380506c380
commit
cc67814b65
1 changed files with 10 additions and 3 deletions
|
@ -65,7 +65,12 @@ run_test_if_present(TestDir, LogDir, Config, File) ->
|
|||
++ " SUITES - skipping\n", [TestDir]),
|
||||
ok;
|
||||
_ ->
|
||||
run_test(TestDir, LogDir, Config, File)
|
||||
try
|
||||
run_test(TestDir, LogDir, Config, File)
|
||||
catch
|
||||
throw:skip ->
|
||||
ok
|
||||
end
|
||||
end
|
||||
end.
|
||||
|
||||
|
@ -270,8 +275,10 @@ find_suite_path(Suite, TestDir) ->
|
|||
Path = filename:join(TestDir, Suite ++ "_SUITE.erl"),
|
||||
case filelib:is_regular(Path) of
|
||||
false ->
|
||||
?ERROR("Suite ~s not found\n", [Suite]),
|
||||
?FAIL;
|
||||
?WARN("Suite ~s not found\n", [Suite]),
|
||||
%% Note - this throw is caught in run_test_if_present/3;
|
||||
%% this solution was easier than refactoring the entire module.
|
||||
throw(skip);
|
||||
true ->
|
||||
Path
|
||||
end.
|
||||
|
|
Loading…
Reference in a new issue