|
|
@ -17,6 +17,8 @@ |
|
|
|
multi_suite/1, |
|
|
|
all_suite/1, |
|
|
|
single_dir_and_single_suite/1, |
|
|
|
suite_at_root/1, |
|
|
|
suite_at_app_root/1, |
|
|
|
data_dir_correct/1, |
|
|
|
cmd_label/1, |
|
|
|
cmd_config/1, |
|
|
@ -72,7 +74,9 @@ groups() -> [{basic_app, [], [basic_app_default_dirs, |
|
|
|
single_unmanaged_suite, |
|
|
|
multi_suite, |
|
|
|
all_suite, |
|
|
|
single_dir_and_single_suite]}, |
|
|
|
single_dir_and_single_suite, |
|
|
|
suite_at_root, |
|
|
|
suite_at_app_root]}, |
|
|
|
{data_dirs, [], [data_dir_correct]}, |
|
|
|
{ct_opts, [], [cmd_label, |
|
|
|
cmd_config, |
|
|
@ -177,6 +181,22 @@ init_per_group(dirs_and_suites, Config) -> |
|
|
|
ok = filelib:ensure_dir(Suite3), |
|
|
|
ok = file:write_file(Suite3, test_suite("extras")), |
|
|
|
|
|
|
|
Suite4 = filename:join([AppDir, "root_SUITE.erl"]), |
|
|
|
ok = file:write_file(Suite4, test_suite("root")), |
|
|
|
|
|
|
|
ok = file:write_file(filename:join([AppDir, "root_SUITE.hrl"]), <<>>), |
|
|
|
|
|
|
|
ok = filelib:ensure_dir(filename:join([AppDir, "root_SUITE_data", "dummy.txt"])), |
|
|
|
ok = file:write_file(filename:join([AppDir, "root_SUITE_data", "some_data.txt"]), <<>>), |
|
|
|
|
|
|
|
Suite5 = filename:join([AppDir, "apps", Name2, "app_root_SUITE.erl"]), |
|
|
|
ok = file:write_file(Suite5, test_suite("app_root")), |
|
|
|
|
|
|
|
ok = file:write_file(filename:join([AppDir, "apps", Name2, "app_root_SUITE.hrl"]), <<>>), |
|
|
|
|
|
|
|
ok = filelib:ensure_dir(filename:join([AppDir, "apps", Name2, "app_root_SUITE_data", "dummy.txt"])), |
|
|
|
ok = file:write_file(filename:join([AppDir, "apps", Name2, "app_root_SUITE_data", "some_data.txt"]), <<>>), |
|
|
|
|
|
|
|
{ok, State} = rebar_test_utils:run_and_check(C, [], ["as", "test", "lock"], return), |
|
|
|
|
|
|
|
[{s, State}, {appnames, [Name1, Name2]}|C]; |
|
|
@ -603,6 +623,79 @@ single_dir_and_single_suite(Config) -> |
|
|
|
Suite = proplists:get_value(suite, Opts), |
|
|
|
["extra_SUITE"] = Suite. |
|
|
|
|
|
|
|
suite_at_root(Config) -> |
|
|
|
AppDir = ?config(apps, Config), |
|
|
|
State = ?config(s, Config), |
|
|
|
|
|
|
|
LibDirs = rebar_dir:lib_dirs(State), |
|
|
|
State1 = rebar_app_discover:do(State, LibDirs), |
|
|
|
|
|
|
|
Providers = rebar_state:providers(State1), |
|
|
|
Namespace = rebar_state:namespace(State1), |
|
|
|
CommandProvider = providers:get_provider(ct, Providers, Namespace), |
|
|
|
GetOptSpec = providers:opts(CommandProvider), |
|
|
|
{ok, GetOptResult} = getopt:parse(GetOptSpec, ["--suite=" ++ filename:join([AppDir, "root_SUITE"])]), |
|
|
|
|
|
|
|
State2 = rebar_state:command_parsed_args(State1, GetOptResult), |
|
|
|
|
|
|
|
Tests = rebar_prv_common_test:prepare_tests(State2), |
|
|
|
{ok, NewState} = rebar_prv_common_test:compile(State2, Tests), |
|
|
|
{ok, T} = Tests, |
|
|
|
Opts = rebar_prv_common_test:translate_paths(NewState, T), |
|
|
|
|
|
|
|
Suite = proplists:get_value(suite, Opts), |
|
|
|
Expected = filename:join([AppDir, "_build", "test", "extras", "root_SUITE"]), |
|
|
|
[Expected] = Suite, |
|
|
|
|
|
|
|
TestHrl = filename:join([AppDir, "_build", "test", "extras", "root_SUITE.hrl"]), |
|
|
|
true = filelib:is_file(TestHrl), |
|
|
|
|
|
|
|
TestBeam = filename:join([AppDir, "_build", "test", "extras", "root_SUITE.beam"]), |
|
|
|
true = filelib:is_file(TestBeam), |
|
|
|
|
|
|
|
DataDir = filename:join([AppDir, "_build", "test", "extras", "root_SUITE_data"]), |
|
|
|
true = filelib:is_dir(DataDir), |
|
|
|
|
|
|
|
DataFile = filename:join([AppDir, "_build", "test", "extras", "root_SUITE_data", "some_data.txt"]), |
|
|
|
true = filelib:is_file(DataFile). |
|
|
|
|
|
|
|
suite_at_app_root(Config) -> |
|
|
|
AppDir = ?config(apps, Config), |
|
|
|
[_Name1, Name2] = ?config(appnames, Config), |
|
|
|
State = ?config(s, Config), |
|
|
|
|
|
|
|
LibDirs = rebar_dir:lib_dirs(State), |
|
|
|
State1 = rebar_app_discover:do(State, LibDirs), |
|
|
|
|
|
|
|
Providers = rebar_state:providers(State1), |
|
|
|
Namespace = rebar_state:namespace(State1), |
|
|
|
CommandProvider = providers:get_provider(ct, Providers, Namespace), |
|
|
|
GetOptSpec = providers:opts(CommandProvider), |
|
|
|
{ok, GetOptResult} = getopt:parse(GetOptSpec, ["--suite=" ++ filename:join([AppDir, "apps", Name2, "app_root_SUITE"])]), |
|
|
|
|
|
|
|
State2 = rebar_state:command_parsed_args(State1, GetOptResult), |
|
|
|
|
|
|
|
Tests = rebar_prv_common_test:prepare_tests(State2), |
|
|
|
{ok, NewState} = rebar_prv_common_test:compile(State2, Tests), |
|
|
|
{ok, T} = Tests, |
|
|
|
Opts = rebar_prv_common_test:translate_paths(NewState, T), |
|
|
|
|
|
|
|
Suite = proplists:get_value(suite, Opts), |
|
|
|
Expected = filename:join([AppDir, "_build", "test", "extras", "apps", Name2, "app_root_SUITE"]), |
|
|
|
[Expected] = Suite, |
|
|
|
|
|
|
|
TestHrl = filename:join([AppDir, "_build", "test", "extras", "apps", Name2, "app_root_SUITE.hrl"]), |
|
|
|
true = filelib:is_file(TestHrl), |
|
|
|
|
|
|
|
TestBeam = filename:join([AppDir, "_build", "test", "extras", "apps", Name2, "app_root_SUITE.beam"]), |
|
|
|
true = filelib:is_file(TestBeam), |
|
|
|
|
|
|
|
DataDir = filename:join([AppDir, "_build", "test", "extras", "apps", Name2, "app_root_SUITE_data"]), |
|
|
|
true = filelib:is_dir(DataDir), |
|
|
|
|
|
|
|
DataFile = filename:join([AppDir, "_build", "test", "extras", "root_SUITE_data", "some_data.txt"]), |
|
|
|
true = filelib:is_file(DataFile). |
|
|
|
|
|
|
|
%% this test probably only fails when this suite is run via rebar3 with the --cover flag |
|
|
|
data_dir_correct(Config) -> |
|
|
|
DataDir = ?config(data_dir, Config), |
|
|
|