diff --git a/src/uu/cp/src/cp.rs b/src/uu/cp/src/cp.rs index 2717137edc3..72cfd61b6aa 100644 --- a/src/uu/cp/src/cp.rs +++ b/src/uu/cp/src/cp.rs @@ -1406,8 +1406,11 @@ impl OverwriteMode { } Err(Error::Skipped(false)) } + // allow `unused_variables` because windows doesn't use `clobber_mode` + #[allow(unused_variables)] Self::Interactive(clobber_mode) => { - let prompt = if cfg!(unix) { + #[cfg(unix)] + let prompt = { let path_md = path.metadata()?; if path_md.permissions().readonly() { match clobber_mode { @@ -1427,9 +1430,9 @@ impl OverwriteMode { } else { format!("overwrite {}?", path.quote()) } - } else { - format!("overwrite {}?", path.quote()) }; + #[cfg(not(unix))] + let prompt = { format!("overwrite {}?", path.quote()) }; if prompt_yes!("{prompt}") { Ok(()) } else { diff --git a/tests/by-util/test_cp.rs b/tests/by-util/test_cp.rs index b847e14432c..9561dbcfe2c 100644 --- a/tests/by-util/test_cp.rs +++ b/tests/by-util/test_cp.rs @@ -5748,6 +5748,11 @@ fn test_cp_interactive_with_read_only_dest() { .permissions(); permissions.set_readonly(true); set_permissions(at.plus(dest), permissions).expect("couldn't set permissions"); + let perms_prompt = if cfg!(target_os = "android") { + " (mode 0400, r--------); try anyway?" + } else { + "(mode 0444, r--r--r--); try anyway?" + }; scene .ucmd() .args(&[ @@ -5758,7 +5763,7 @@ fn test_cp_interactive_with_read_only_dest() { .pipe_in("y\n") .fails() .stderr_contains("unwritable") - .stderr_contains("(mode 0444, r--r--r--); try anyway?") + .stderr_contains(perms_prompt) .stderr_contains("Permission denied"); assert_eq!(at.read(&at.plus(dest).to_string_lossy()), "dest contents"); } @@ -5781,6 +5786,11 @@ fn test_cp_interactive_with_read_only_dest_and_force() { .permissions(); permissions.set_readonly(true); set_permissions(at.plus(dest), permissions).expect("couldn't set permissions"); + let perms_prompt = if cfg!(target_os = "android") { + " overriding mode 0400 (r--------)?" + } else { + " overriding mode 0444 (r--r--r--)?" + }; scene .ucmd() .args(&[ @@ -5791,10 +5801,11 @@ fn test_cp_interactive_with_read_only_dest_and_force() { .pipe_in("y\n") .succeeds() .stderr_contains("replace") - .stderr_contains(" overriding mode 0444 (r--r--r--)?"); + .stderr_contains(perms_prompt); assert_eq!(at.read(&at.plus(dest).to_string_lossy()), "src contents"); } +#[cfg(unix)] #[test] fn test_cp_interactive_with_read_only_dest_and_rem() { let src = "src"; @@ -5812,7 +5823,11 @@ fn test_cp_interactive_with_read_only_dest_and_rem() { .permissions(); permissions.set_readonly(true); set_permissions(at.plus(dest), permissions).expect("couldn't set permissions"); - + let perms_prompt = if cfg!(target_os = "android") { + " overriding mode 0400 (r--------)?" + } else { + " overriding mode 0444 (r--r--r--)?" + }; scene .ucmd() .args(&[ @@ -5824,7 +5839,7 @@ fn test_cp_interactive_with_read_only_dest_and_rem() { .pipe_in("y\n") .succeeds() .stderr_contains("replace") - .stderr_contains(" overriding mode 0444 (r--r--r--)?"); + .stderr_contains(perms_prompt); assert_eq!(at.read(&at.plus(dest).to_string_lossy()), "src contents"); }