diff --git a/tests/by-util/test_cp.rs b/tests/by-util/test_cp.rs index 7f293edcf..5376ba363 100644 --- a/tests/by-util/test_cp.rs +++ b/tests/by-util/test_cp.rs @@ -374,6 +374,62 @@ fn test_cp_arg_update_short_overwrite() { assert_eq!(at.read(old), "new content\n") } +#[test] +fn test_cp_arg_update_none_then_all() { + // take last if multiple update args are supplied, + // update=all wins in this case + let (at, mut ucmd) = at_and_ucmd!(); + + let old = "test_cp_arg_update_none_then_all_file1"; + let new = "test_cp_arg_update_none_then_all_file2"; + let old_content = "old content\n"; + let new_content = "new content\n"; + + at.write(old, old_content); + + sleep(Duration::from_secs(1)); + + at.write(new, new_content); + + ucmd.arg(old) + .arg(new) + .arg("--update=none") + .arg("--update=all") + .succeeds() + .no_stderr() + .no_stdout(); + + assert_eq!(at.read(new), "old content\n") +} + +#[test] +fn test_cp_arg_update_all_then_none() { + // take last if multiple update args are supplied, + // update=none wins in this case + let (at, mut ucmd) = at_and_ucmd!(); + + let old = "test_cp_arg_update_all_then_none_file1"; + let new = "test_cp_arg_update_all_then_none_file2"; + let old_content = "old content\n"; + let new_content = "new content\n"; + + at.write(old, old_content); + + sleep(Duration::from_secs(1)); + + at.write(new, new_content); + + ucmd.arg(old) + .arg(new) + .arg("--update=all") + .arg("--update=none") + .succeeds() + .no_stderr() + .no_stdout(); + + assert_eq!(at.read(new), "new content\n") +} + #[test] fn test_cp_arg_interactive() { let (at, mut ucmd) = at_and_ucmd!();