summaryrefslogtreecommitdiff
path: root/test/rebar_deps_SUITE.erl
diff options
context:
space:
mode:
Diffstat (limited to 'test/rebar_deps_SUITE.erl')
-rw-r--r--test/rebar_deps_SUITE.erl35
1 files changed, 26 insertions, 9 deletions
diff --git a/test/rebar_deps_SUITE.erl b/test/rebar_deps_SUITE.erl
index b6ee8b8..6e5b874 100644
--- a/test/rebar_deps_SUITE.erl
+++ b/test/rebar_deps_SUITE.erl
@@ -4,7 +4,8 @@
-include_lib("common_test/include/ct.hrl").
-include_lib("eunit/include/eunit.hrl").
-all() -> [flat, pick_highest_left, pick_highest_right, pick_earliest].
+all() -> [flat, pick_highest_left, pick_highest_right, pick_earliest,
+ circular1, circular2].
init_per_suite(Config) ->
application:start(meck),
@@ -15,29 +16,42 @@ end_per_suite(_Config) ->
init_per_testcase(Case, Config) ->
{Deps, Expect} = deps(Case),
- [{expect,
- [case Dep of
+ Expected = case Expect of
+ {ok, List} -> {ok, format_expected_deps(List)};
+ {error, Reason} -> {error, Reason}
+ end,
+ [{expect, Expected} | setup_project(Case, Config, expand_deps(Deps))].
+
+format_expected_deps(Deps) ->
+ [case Dep of
{N,V} -> {dep, N, V};
N -> {dep, N}
- end || Dep <- Expect]}
- | setup_project(Case, Config, expand_deps(Deps))].
+ end || Dep <- Deps].
deps(flat) ->
{[{"B", []},
{"C", []}],
- ["B", "C"]};
+ {ok, ["B", "C"]}};
deps(pick_highest_left) ->
{[{"B", [{"C", "2", []}]},
{"C", "1", []}],
- ["B", {"C", "1"}]}; % Warn C2
+ {ok, ["B", {"C", "1"}]}}; % Warn C2
deps(pick_highest_right) ->
{[{"B", "1", []},
{"C", [{"B", "2", []}]}],
- [{"B","1"}, "C"]}; % Warn B2
+ {ok, [{"B","1"}, "C"]}}; % Warn B2
deps(pick_earliest) ->
{[{"B", [{"D", "1", []}]},
{"C", [{"D", "2", []}]}],
- ["B","C",{"D","1"}]}. % Warn D2
+ {ok, ["B","C",{"D","1"}]}}; % Warn D2
+deps(circular1) ->
+ {[{"B", [{"A", []}]}, % A is the top-level app
+ {"C", []}],
+ {error, no_sort}}; % circular dep
+deps(circular2) ->
+ {[{"B", [{"C", [{"B", []}]}]},
+ {"C", []}],
+ {error, no_sort}}. % circular dep
end_per_testcase(_, Config) ->
mock_git_resource:unmock(),
@@ -55,6 +69,7 @@ expand_deps([{Name, Vsn, Deps} | Rest]) ->
setup_project(Case, Config0, Deps) ->
Config = rebar_test_utils:init_rebar_state(Config0, atom_to_list(Case)),
AppDir = ?config(apps, Config),
+ rebar_test_utils:create_app(AppDir, "A", "0.0.0", [kernel, stdlib]),
TopDeps = top_level_deps(Deps),
RebarConf = rebar_test_utils:create_config(AppDir, [{deps, TopDeps}]),
mock_git_resource:mock([{deps, flat_deps(Deps)}]),
@@ -76,6 +91,8 @@ flat(Config) -> run(Config).
pick_highest_left(Config) -> run(Config).
pick_highest_right(Config) -> run(Config).
pick_earliest(Config) -> run(Config).
+circular1(Config) -> run(Config).
+circular2(Config) -> run(Config).
run(Config) ->
{ok, RebarConfig} = file:consult(?config(rebarconfig, Config)),