|
|
@ -8,7 +8,8 @@ all() -> [{group, git}, {group, pkg}]. |
|
|
|
groups() -> |
|
|
|
[{all, [], [flat, pick_highest_left, pick_highest_right, |
|
|
|
pick_smallest1, pick_smallest2, |
|
|
|
circular1, circular2, circular_skip]}, |
|
|
|
circular1, circular2, circular_skip, |
|
|
|
fail_conflict]}, |
|
|
|
{git, [], [{group, all}]}, |
|
|
|
{pkg, [], [{group, all}]}]. |
|
|
|
|
|
|
@ -33,7 +34,7 @@ init_per_testcase(Case, Config) -> |
|
|
|
{Deps, Warnings, Expect} = deps(Case), |
|
|
|
Expected = case Expect of |
|
|
|
{ok, List} -> {ok, format_expected_deps(List)}; |
|
|
|
{error, Reason} -> {error, Reason} |
|
|
|
Other -> Other |
|
|
|
end, |
|
|
|
DepsType = ?config(deps_type, Config), |
|
|
|
mock_warnings(), |
|
|
@ -108,13 +109,36 @@ deps(circular_skip) -> |
|
|
|
{[{"B", [{"C", "2", [{"B", []}]}]}, |
|
|
|
{"C", "1", [{"D",[]}]}], |
|
|
|
[{"C","2"}], |
|
|
|
{ok, ["B", {"C","1"}, "D"]}}. |
|
|
|
{ok, ["B", {"C","1"}, "D"]}}; |
|
|
|
deps(fail_conflict) -> |
|
|
|
{[{"B", [{"C", "2", []}]}, |
|
|
|
{"C", "1", []}], |
|
|
|
[{"C","2"}], |
|
|
|
rebar_abort}. |
|
|
|
|
|
|
|
setup_project(fail_conflict, Config0, Deps) -> |
|
|
|
DepsType = ?config(deps_type, Config0), |
|
|
|
Config = rebar_test_utils:init_rebar_state( |
|
|
|
Config0, |
|
|
|
"fail_conflict_"++atom_to_list(DepsType)++"_" |
|
|
|
), |
|
|
|
AppDir = ?config(apps, Config), |
|
|
|
rebar_test_utils:create_app(AppDir, "A", "0.0.0", [kernel, stdlib]), |
|
|
|
TopDeps = rebar_test_utils:top_level_deps(Deps), |
|
|
|
RebarConf = rebar_test_utils:create_config(AppDir, [{deps, TopDeps}, |
|
|
|
{deps_error_on_conflict, true}]), |
|
|
|
case DepsType of |
|
|
|
git -> |
|
|
|
mock_git_resource:mock([{deps, rebar_test_utils:flat_deps(Deps)}]); |
|
|
|
pkg -> |
|
|
|
mock_pkg_resource:mock([{pkgdeps, rebar_test_utils:flat_pkgdeps(Deps)}]) |
|
|
|
end, |
|
|
|
[{rebarconfig, RebarConf} | Config]; |
|
|
|
setup_project(Case, Config0, Deps) -> |
|
|
|
DepsType = ?config(deps_type, Config0), |
|
|
|
Config = rebar_test_utils:init_rebar_state( |
|
|
|
Config0, |
|
|
|
atom_to_list(Case)++"_"++atom_to_list(DepsType)++"_" |
|
|
|
atom_to_list(Case)++"_installdeps_"++atom_to_list(DepsType)++"_" |
|
|
|
), |
|
|
|
AppDir = ?config(apps, Config), |
|
|
|
rebar_test_utils:create_app(AppDir, "A", "0.0.0", [kernel, stdlib]), |
|
|
@ -143,6 +167,13 @@ circular1(Config) -> run(Config). |
|
|
|
circular2(Config) -> run(Config). |
|
|
|
circular_skip(Config) -> run(Config). |
|
|
|
|
|
|
|
fail_conflict(Config) -> |
|
|
|
{ok, RebarConfig} = file:consult(?config(rebarconfig, Config)), |
|
|
|
rebar_test_utils:run_and_check( |
|
|
|
Config, RebarConfig, ["install_deps"], ?config(expect, Config) |
|
|
|
), |
|
|
|
check_warnings(error_calls(), ?config(warnings, Config), ?config(deps_type, Config)). |
|
|
|
|
|
|
|
run(Config) -> |
|
|
|
{ok, RebarConfig} = file:consult(?config(rebarconfig, Config)), |
|
|
|
rebar_test_utils:run_and_check( |
|
|
@ -154,6 +185,10 @@ warning_calls() -> |
|
|
|
History = meck:history(rebar_log), |
|
|
|
[{Str, Args} || {_, {rebar_log, log, [warn, Str, Args]}, _} <- History]. |
|
|
|
|
|
|
|
error_calls() -> |
|
|
|
History = meck:history(rebar_log), |
|
|
|
[{Str, Args} || {_, {rebar_log, log, [error, Str, Args]}, _} <- History]. |
|
|
|
|
|
|
|
check_warnings(_, [], _) -> |
|
|
|
ok; |
|
|
|
check_warnings(Warns, [{Name, Vsn} | Rest], Type) -> |
|
|
|