From e1eec02c809cda38c548642436c88c39250a505a Mon Sep 17 00:00:00 2001 From: Tuncer Ayaz Date: Wed, 26 Mar 2014 18:41:59 +0100 Subject: [PATCH] file_utils: properly report errors (fix #95) While at it, improve the error message printed by rebar_utils:sh/2. --- src/rebar_file_utils.erl | 6 +++--- src/rebar_utils.erl | 5 +++-- test/rebar_file_utils_tests.erl | 4 ++-- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/rebar_file_utils.erl b/src/rebar_file_utils.erl index fcd9c5e..9ddbf27 100644 --- a/src/rebar_file_utils.erl +++ b/src/rebar_file_utils.erl @@ -46,7 +46,7 @@ rm_rf(Target) -> {unix, _} -> EscTarget = escape_spaces(Target), {ok, []} = rebar_utils:sh(?FMT("rm -rf ~s", [EscTarget]), - [{use_stdout, false}, return_on_error]), + [{use_stdout, false}, abort_on_error]), ok; {win32, _} -> Filelist = filelib:wildcard(Target), @@ -67,7 +67,7 @@ cp_r(Sources, Dest) -> SourceStr = string:join(EscSources, " "), {ok, []} = rebar_utils:sh(?FMT("cp -R ~s \"~s\"", [SourceStr, Dest]), - [{use_stdout, false}, return_on_error]), + [{use_stdout, false}, abort_on_error]), ok; {win32, _} -> lists:foreach(fun(Src) -> ok = cp_r_win32(Src,Dest) end, Sources), @@ -81,7 +81,7 @@ mv(Source, Dest) -> EscSource = escape_spaces(Source), EscDest = escape_spaces(Dest), {ok, []} = rebar_utils:sh(?FMT("mv ~s ~s", [EscSource, EscDest]), - [{use_stdout, false}, return_on_error]), + [{use_stdout, false}, abort_on_error]), ok; {win32, _} -> {ok, R} = rebar_utils:sh( diff --git a/src/rebar_utils.erl b/src/rebar_utils.erl index 2d227b6..289f918 100644 --- a/src/rebar_utils.erl +++ b/src/rebar_utils.erl @@ -398,8 +398,9 @@ log_msg_and_abort(Message) -> -spec log_and_abort(string(), {integer(), string()}) -> no_return(). log_and_abort(Command, {Rc, Output}) -> - ?ABORT("~s failed with error: ~w and output:~n~s~n", - [Command, Rc, Output]). + ?ABORT("sh(~s)~n" + "failed with return code ~w and the following output:~n" + "~s~n", [Command, Rc, Output]). sh_loop(Port, Fun, Acc) -> receive diff --git a/test/rebar_file_utils_tests.erl b/test/rebar_file_utils_tests.erl index 26a6f9f..a191765 100644 --- a/test/rebar_file_utils_tests.erl +++ b/test/rebar_file_utils_tests.erl @@ -191,7 +191,7 @@ cp_r_overwrite_file_fail_test_() -> filename:join([?TMP_DIR,"dest","file1"]),0) end, fun teardown/1, - [?_assertError({badmatch,_}, + [?_assertThrow(rebar_abort, rebar_file_utils:cp_r( [filename:join([?TMP_DIR,"source","file1"])], filename:join([?TMP_DIR,"dest"])))]}. @@ -210,7 +210,7 @@ cp_r_overwrite_dir_fail_test_() -> filename:join([?TMP_DIR,"dest","source","file1"]),0) end, fun teardown/1, - [?_assertError({badmatch,_}, + [?_assertThrow(rebar_abort, rebar_file_utils:cp_r( [filename:join([?TMP_DIR,"source"])], filename:join([?TMP_DIR,"dest"])))]}.