mirror of
https://github.com/RGBCube/uutils-coreutils
synced 2025-07-29 03:57:44 +00:00
mv: -i show no error if overwriting is declined
This commit is contained in:
parent
698bdf5f9a
commit
e94f1d8eb7
2 changed files with 38 additions and 16 deletions
|
@ -24,7 +24,7 @@ use std::os::windows;
|
||||||
use std::path::{Path, PathBuf};
|
use std::path::{Path, PathBuf};
|
||||||
use uucore::backup_control::{self, BackupMode};
|
use uucore::backup_control::{self, BackupMode};
|
||||||
use uucore::display::Quotable;
|
use uucore::display::Quotable;
|
||||||
use uucore::error::{FromIo, UError, UResult, USimpleError, UUsageError};
|
use uucore::error::{set_exit_code, FromIo, UError, UResult, USimpleError, UUsageError};
|
||||||
use uucore::{format_usage, help_about, help_usage, prompt_yes, show};
|
use uucore::{format_usage, help_about, help_usage, prompt_yes, show};
|
||||||
|
|
||||||
use fs_extra::dir::{
|
use fs_extra::dir::{
|
||||||
|
@ -378,21 +378,23 @@ fn move_files_into_dir(files: &[PathBuf], target_dir: &Path, b: &Behavior) -> UR
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let rename_result = rename(sourcepath, &targetpath, b, multi_progress.as_ref())
|
match rename(sourcepath, &targetpath, b, multi_progress.as_ref()) {
|
||||||
.map_err_context(|| {
|
Err(e) if e.to_string() == "" => set_exit_code(1),
|
||||||
|
Err(e) => {
|
||||||
|
let e = e.map_err_context(|| {
|
||||||
format!(
|
format!(
|
||||||
"cannot move {} to {}",
|
"cannot move {} to {}",
|
||||||
sourcepath.quote(),
|
sourcepath.quote(),
|
||||||
targetpath.quote()
|
targetpath.quote()
|
||||||
)
|
)
|
||||||
});
|
});
|
||||||
|
|
||||||
if let Err(e) = rename_result {
|
|
||||||
match multi_progress {
|
match multi_progress {
|
||||||
Some(ref pb) => pb.suspend(|| show!(e)),
|
Some(ref pb) => pb.suspend(|| show!(e)),
|
||||||
None => show!(e),
|
None => show!(e),
|
||||||
};
|
};
|
||||||
};
|
}
|
||||||
|
Ok(()) => (),
|
||||||
|
}
|
||||||
|
|
||||||
if let Some(ref pb) = count_progress {
|
if let Some(ref pb) = count_progress {
|
||||||
pb.inc(1);
|
pb.inc(1);
|
||||||
|
|
|
@ -181,6 +181,26 @@ fn test_mv_interactive() {
|
||||||
assert!(at.file_exists(file_b));
|
assert!(at.file_exists(file_b));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_mv_interactive_with_dir_as_target() {
|
||||||
|
let (at, mut ucmd) = at_and_ucmd!();
|
||||||
|
|
||||||
|
let file = "test_mv_interactive_file";
|
||||||
|
let target_dir = "target";
|
||||||
|
|
||||||
|
at.mkdir(target_dir);
|
||||||
|
at.touch(file);
|
||||||
|
at.touch(format!("{target_dir}/{file}"));
|
||||||
|
|
||||||
|
ucmd.arg(file)
|
||||||
|
.arg(target_dir)
|
||||||
|
.arg("-i")
|
||||||
|
.pipe_in("n")
|
||||||
|
.fails()
|
||||||
|
.stderr_does_not_contain("cannot move")
|
||||||
|
.no_stdout();
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_mv_arg_update_interactive() {
|
fn test_mv_arg_update_interactive() {
|
||||||
let (at, mut ucmd) = at_and_ucmd!();
|
let (at, mut ucmd) = at_and_ucmd!();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue