浏览代码

Handle cycle errors in provider

pull/44/head
Fred Hebert 10 年前
父节点
当前提交
be39ab9e7b
共有 2 个文件被更改,包括 10 次插入2 次删除
  1. +8
    -0
      src/rebar_prv_install_deps.erl
  2. +2
    -2
      test/rebar_deps_SUITE.erl

+ 8
- 0
src/rebar_prv_install_deps.erl 查看文件

@ -81,6 +81,8 @@ do(State) ->
{ok, rebar_state:deps_to_build(State1,
lists:dropwhile(fun rebar_app_info:valid/1
, Sort -- ProjectApps))};
{error, {cycles, Cycles}} ->
{error, {?MODULE, {cycles, Cycles}}};
{error, Error} ->
{error, Error}
end
@ -91,6 +93,12 @@ do(State) ->
end.
-spec format_error(any()) -> iolist().
format_error({cycles, Cycles}) ->
Prints = [["applications: ",
[io_lib:format("~s ", [Dep]) || Dep <- Cycle],
"depend on each other~n"]
|| Cycle <- Cycles],
["Dependency cycle(s) detected:~n", Prints];
format_error(Reason) ->
io_lib:format("~p", [Reason]).

+ 2
- 2
test/rebar_deps_SUITE.erl 查看文件

@ -47,11 +47,11 @@ deps(pick_earliest) ->
deps(circular1) ->
{[{"B", [{"A", []}]}, % A is the top-level app
{"C", []}],
{error, {cycles, [[<<"A">>,<<"B">>]]}}}; % circular dep
{error, {rebar_prv_install_deps, {cycles, [[<<"A">>,<<"B">>]]}}}};
deps(circular2) ->
{[{"B", [{"C", [{"B", []}]}]},
{"C", []}],
{error, {cycles, [[<<"B">>,<<"C">>]]}}}. % circular dep
{error, {rebar_prv_install_deps, {cycles, [[<<"B">>,<<"C">>]]}}}}.
end_per_testcase(_, Config) ->
mock_git_resource:unmock(),

正在加载...
取消
保存