allow suite[s] or test[s] as options for eunit and ct

This commit is contained in:
Andrew J. Stone 2014-02-05 16:56:44 -05:00
parent af91604053
commit cc72cd8fce
3 changed files with 60 additions and 36 deletions

View file

@ -359,18 +359,18 @@ generate-upgrade previous_release=path Build an upgrade package
generate-appups previous_release=path Generate appup files generate-appups previous_release=path Generate appup files
eunit [suites=foo] Run eunit tests in foo.erl and eunit [suite[s]=foo] Run eunit tests in foo.erl and
test/foo_tests.erl test/foo_tests.erl
[suites=foo] [tests=bar] Run specific eunit tests [first test name [suite[s]=foo] [test[s]=bar] Run specific eunit tests [first test
starting with 'bar' in foo.erl and name starting with 'bar' in foo.erl
test/foo_tests.erl] and test/foo_tests.erl]
[tests=bar] For every existing suite, run the first [test[s]=bar] For every existing suite, run the first
test whose name starts with bar and, if test whose name starts with bar and, if
no such test exists, run the test whose no such test exists, run the test whose
name starts with bar in the suite's name starts with bar in the suite's
_tests module _tests module
ct [suites=] [case=] Run common_test suites ct [suite[s]=] [case=] Run common_test suites
qc Test QuickCheck properties qc Test QuickCheck properties

View file

@ -320,7 +320,7 @@ get_config_file(TestDir) ->
end. end.
get_suites(Config, TestDir) -> get_suites(Config, TestDir) ->
case rebar_config:get_global(Config, suites, undefined) of case get_suites(Config) of
undefined -> undefined ->
" -dir " ++ TestDir; " -dir " ++ TestDir;
Suites -> Suites ->
@ -329,6 +329,14 @@ get_suites(Config, TestDir) ->
string:join([" -suite"] ++ Suites2, " ") string:join([" -suite"] ++ Suites2, " ")
end. end.
get_suites(Config) ->
case rebar_config:get_global(Config, suites, undefined) of
undefined ->
rebar_config:get_global(Config, suite, undefined);
Suites ->
Suites
end.
find_suite_path(Suite, TestDir) -> find_suite_path(Suite, TestDir) ->
Path = filename:join(TestDir, Suite ++ "_SUITE.erl"), Path = filename:join(TestDir, Suite ++ "_SUITE.erl"),
case filelib:is_regular(Path) of case filelib:is_regular(Path) of

View file

@ -120,9 +120,9 @@ info_help(Description) ->
" ~p~n" " ~p~n"
" ~p~n" " ~p~n"
"Valid command line options:~n" "Valid command line options:~n"
" suites=\"foo,bar\" (Run tests in foo.erl, test/foo_tests.erl and~n" " suite[s]=\"foo,bar\" (Run tests in foo.erl, test/foo_tests.erl and~n"
" tests in bar.erl, test/bar_tests.erl)~n" " tests in bar.erl, test/bar_tests.erl)~n"
" tests=\"baz\" (For every existing suite, run the first test whose~n" " test[s]=\"baz\" (For every existing suite, run the first test whose~n"
" name starts with bar and, if no such test exists,~n" " name starts with bar and, if no such test exists,~n"
" run the test whose name starts with bar in the~n" " run the test whose name starts with bar in the~n"
" suite's _tests module)~n" " suite's _tests module)~n"
@ -215,7 +215,7 @@ setup_code_path() ->
%% %%
filter_suites(Config, Modules) -> filter_suites(Config, Modules) ->
RawSuites = rebar_config:get_global(Config, suites, ""), RawSuites = get_suites(Config),
SuitesProvided = RawSuites =/= "", SuitesProvided = RawSuites =/= "",
Suites = [list_to_atom(Suite) || Suite <- string:tokens(RawSuites, ",")], Suites = [list_to_atom(Suite) || Suite <- string:tokens(RawSuites, ",")],
{SuitesProvided, filter_suites1(Modules, Suites)}. {SuitesProvided, filter_suites1(Modules, Suites)}.
@ -225,6 +225,14 @@ filter_suites1(Modules, []) ->
filter_suites1(Modules, Suites) -> filter_suites1(Modules, Suites) ->
[M || M <- Suites, lists:member(M, Modules)]. [M || M <- Suites, lists:member(M, Modules)].
get_suites(Config) ->
case rebar_config:get_global(Config, suites, "") of
"" ->
rebar_config:get_global(Config, suite, "");
Suites ->
Suites
end.
%% %%
%% == get matching tests == %% == get matching tests ==
%% %%
@ -259,8 +267,16 @@ get_tests(Config, SuitesProvided, ModuleBeamFiles, FilteredModules) ->
end, end,
get_matching_tests(Config, Modules). get_matching_tests(Config, Modules).
get_tests(Config) ->
case rebar_config:get_global(Config, tests, "") of
"" ->
rebar_config:get_global(Config, test, "");
Suites ->
Suites
end.
get_matching_tests(Config, Modules) -> get_matching_tests(Config, Modules) ->
RawFunctions = rebar_config:get_global(Config, tests, ""), RawFunctions = get_tests(Config),
Tests = [list_to_atom(F1) || F1 <- string:tokens(RawFunctions, ",")], Tests = [list_to_atom(F1) || F1 <- string:tokens(RawFunctions, ",")],
case Tests of case Tests of
[] -> [] ->