Merge pull request #224 from andrewjstone/allow-test

allow suite[s] or test[s] as options for eunit and ct
This commit is contained in:
Jared Morrow 2014-02-07 10:53:08 -07:00
commit fa679b4343
3 changed files with 60 additions and 36 deletions

View file

@ -333,51 +333,51 @@ show_info_maybe_halt(O, Opts, F) ->
%% %%
commands() -> commands() ->
S = <<" S = <<"
clean Clean clean Clean
compile Compile sources compile Compile sources
escriptize Generate escript archive escriptize Generate escript archive
create template= [var=foo,...] Create skel based on template and vars create template= [var=foo,...] Create skel based on template and vars
create-app [appid=myapp] Create simple app skel create-app [appid=myapp] Create simple app skel
create-lib [libid=mylib] Create simple lib skel create-lib [libid=mylib] Create simple lib skel
create-node [nodeid=mynode] Create simple node skel create-node [nodeid=mynode] Create simple node skel
list-templates List available templates list-templates List available templates
doc Generate Erlang program documentation doc Generate Erlang program documentation
check-deps Display to be fetched dependencies check-deps Display to be fetched dependencies
get-deps Fetch dependencies get-deps Fetch dependencies
update-deps Update fetched dependencies update-deps Update fetched dependencies
delete-deps Delete fetched dependencies delete-deps Delete fetched dependencies
list-deps List dependencies list-deps List dependencies
generate [dump_spec=0/1] Build release with reltool generate [dump_spec=0/1] Build release with reltool
overlay Run reltool overlays only overlay Run reltool overlays only
generate-upgrade previous_release=path Build an upgrade package 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
xref Run cross reference analysis xref Run cross reference analysis
help Show the program options help Show the program options
version Show version information version Show version information
">>, ">>,
io:put_chars(S). io:put_chars(S).

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
[] -> [] ->