mirror of
https://github.com/uutils/coreutils
synced 2024-12-14 15:22:38 +00:00
cp: fix cp --force --backup f f
fails on macOS
This commit is contained in:
parent
e6ff094e54
commit
3896aa31be
2 changed files with 5 additions and 9 deletions
|
@ -52,7 +52,10 @@ pub(crate) fn copy_on_write(
|
|||
flags: u32,
|
||||
) -> libc::c_int = std::mem::transmute(raw_pfn);
|
||||
error = pfn(src.as_ptr(), dst.as_ptr(), 0);
|
||||
if std::io::Error::last_os_error().kind() == std::io::ErrorKind::AlreadyExists {
|
||||
if std::io::Error::last_os_error().kind() == std::io::ErrorKind::AlreadyExists
|
||||
// Only remove the `dest` if the `source` and `dest` are not the same
|
||||
&& source != dest
|
||||
{
|
||||
// clonefile(2) fails if the destination exists. Remove it and try again. Do not
|
||||
// bother to check if removal worked because we're going to try to clone again.
|
||||
let _ = fs::remove_file(dest);
|
||||
|
|
|
@ -2290,16 +2290,9 @@ fn test_same_file_force() {
|
|||
}
|
||||
|
||||
/// Test that copying file to itself with forced backup succeeds.
|
||||
#[cfg(all(not(windows), not(target_os = "macos")))]
|
||||
#[cfg(all(not(windows)))]
|
||||
#[test]
|
||||
fn test_same_file_force_backup() {
|
||||
// TODO This test should work on macos, but the command was
|
||||
// causing an error:
|
||||
//
|
||||
// cp: 'f' -> 'f': No such file or directory (os error 2)
|
||||
//
|
||||
// I couldn't figure out how to fix it, so I just skipped this
|
||||
// test on macos.
|
||||
let (at, mut ucmd) = at_and_ucmd!();
|
||||
at.touch("f");
|
||||
ucmd.args(&["--force", "--backup", "f", "f"])
|
||||
|
|
Loading…
Reference in a new issue