mirror of
https://github.com/uutils/coreutils
synced 2024-12-14 15:22:38 +00:00
Merge pull request #4905 from sylvestre/mv-n
mv: Show 'skipped' when a file isn't overwriten
This commit is contained in:
commit
191f2380b9
2 changed files with 33 additions and 4 deletions
|
@ -440,13 +440,19 @@ fn rename(
|
|||
|
||||
match b.overwrite {
|
||||
OverwriteMode::NoClobber => {
|
||||
return Err(io::Error::new(
|
||||
io::ErrorKind::Other,
|
||||
format!("not replacing {}", to.quote()),
|
||||
));
|
||||
let err_msg = if b.verbose {
|
||||
println!("skipped {}", to.quote());
|
||||
String::new()
|
||||
} else {
|
||||
format!("not replacing {}", to.quote())
|
||||
};
|
||||
return Err(io::Error::new(io::ErrorKind::Other, err_msg));
|
||||
}
|
||||
OverwriteMode::Interactive => {
|
||||
if !prompt_yes!("overwrite {}?", to.quote()) {
|
||||
if b.verbose {
|
||||
println!("skipped {}", to.quote());
|
||||
}
|
||||
return Err(io::Error::new(io::ErrorKind::Other, ""));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1243,6 +1243,29 @@ fn test_mv_info_self() {
|
|||
.stderr_contains("mv: cannot move 'dir2' to a subdirectory of itself, 'dir2/dir2'");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_mv_arg_interactive_skipped() {
|
||||
let (at, mut ucmd) = at_and_ucmd!();
|
||||
at.touch("a");
|
||||
at.touch("b");
|
||||
ucmd.args(&["-vi", "a", "b"])
|
||||
.pipe_in("N\n")
|
||||
.ignore_stdin_write_error()
|
||||
.fails()
|
||||
.stderr_is("mv: overwrite 'b'? ")
|
||||
.stdout_is("skipped 'b'\n");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_mv_arg_interactive_skipped_vin() {
|
||||
let (at, mut ucmd) = at_and_ucmd!();
|
||||
at.touch("a");
|
||||
at.touch("b");
|
||||
ucmd.args(&["-vin", "a", "b"])
|
||||
.fails()
|
||||
.stdout_is("skipped 'b'\n");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_mv_into_self_data() {
|
||||
let scene = TestScenario::new(util_name!());
|
||||
|
|
Loading…
Reference in a new issue