summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid de Boer <david@ddeboer.nl>2016-09-14 16:32:16 +0200
committerDavid de Boer <david@ddeboer.nl>2016-09-15 08:57:24 +0200
commit2b6fa7a25e0acdee4ce2a452152b688f2df27dea (patch)
treedb33b567acc87a099469ec000b1c6257116679d2
parent0e2b1a11b23658f06fb88076234eaad31605ff4c (diff)
Ignore mv warnings
In some cases, mv will throw a warning, while still moving the files correctly and returning a 0 return code: "mv: can't preserve ownership of ... Permission denied".
-rw-r--r--src/rebar_file_utils.erl11
-rw-r--r--test/rebar_file_utils_SUITE.erl12
2 files changed, 18 insertions, 5 deletions
diff --git a/src/rebar_file_utils.erl b/src/rebar_file_utils.erl
index 104c047..437780d 100644
--- a/src/rebar_file_utils.erl
+++ b/src/rebar_file_utils.erl
@@ -171,9 +171,14 @@ mv(Source, Dest) ->
{unix, _} ->
EscSource = rebar_utils:escape_chars(Source),
EscDest = rebar_utils:escape_chars(Dest),
- {ok, []} = rebar_utils:sh(?FMT("mv ~s ~s", [EscSource, EscDest]),
- [{use_stdout, false}, abort_on_error]),
- ok;
+ case rebar_utils:sh(?FMT("mv ~s ~s", [EscSource, EscDest]),
+ [{use_stdout, false}, abort_on_error]) of
+ {ok, []} ->
+ ok;
+ {ok, Warning} ->
+ ?WARN("mv: ~p", [Warning]),
+ ok
+ end;
{win32, _} ->
Cmd = case filelib:is_dir(Source) of
true ->
diff --git a/test/rebar_file_utils_SUITE.erl b/test/rebar_file_utils_SUITE.erl
index a44a06d..7285e13 100644
--- a/test/rebar_file_utils_SUITE.erl
+++ b/test/rebar_file_utils_SUITE.erl
@@ -14,7 +14,8 @@
path_from_ancestor/1,
canonical_path/1,
resolve_link/1,
- split_dirname/1]).
+ split_dirname/1,
+ mv_warning_is_ignored/1]).
-include_lib("common_test/include/ct.hrl").
-include_lib("eunit/include/eunit.hrl").
@@ -27,7 +28,8 @@ all() ->
path_from_ancestor,
canonical_path,
resolve_link,
- split_dirname].
+ split_dirname,
+ mv_warning_is_ignored].
groups() ->
[{tmpdir, [], [raw_tmpdir, empty_tmpdir, simple_tmpdir, multi_tmpdir]},
@@ -135,3 +137,9 @@ split_dirname(_Config) ->
?assertEqual({".", "foo"}, rebar_file_utils:split_dirname("foo")),
?assertEqual({"/foo", "bar"}, rebar_file_utils:split_dirname("/foo/bar")),
?assertEqual({"foo", "bar"}, rebar_file_utils:split_dirname("foo/bar")).
+
+mv_warning_is_ignored(_Config) ->
+ meck:new(rebar_utils, [passthrough]),
+ meck:expect(rebar_utils, sh, fun("mv ding dong", _) -> {ok, "Warning"} end),
+ ok = rebar_file_utils:mv("ding", "dong"),
+ meck:unload(rebar_utils).