tests/cp: add test for cp-parents.sh
@@ -26,6 +26,7 @@ use std::fs as std_fs;
use std::thread::sleep;
#[cfg(any(target_os = "linux", target_os = "android"))]
use std::time::Duration;
+use uucore::display::Quotable;
static TEST_EXISTING_FILE: &str = "existing_file.txt";
static TEST_HELLO_WORLD_SOURCE: &str = "hello_world.txt";
@@ -1752,3 +1753,47 @@ fn test_copy_same_symlink_no_dereference_dangling() {
at.relative_symlink_file("t", "b");
ucmd.args(&["-d", "a", "b"]).succeeds();
}
+
+#[test]
+#[ignore = "issue #3332"]
+fn test_cp_parents_2() {
+ let (at, mut ucmd) = at_and_ucmd!();
+ at.mkdir_all("a/b");
+ at.touch("a/b/c");
+ at.mkdir("d");
+ ucmd.args(&["--verbose", "-a", "--parents", "a/b/c", "d"])
+ .succeeds()
+ .stdout_is(format!(
+ "{} -> {}\n{} -> {}\n{} -> {}\n",
+ "a",
+ path_concat!("d", "a"),
+ path_concat!("a", "b"),
+ path_concat!("d", "a", "b"),
+ path_concat!("a", "b", "c").quote(),
+ path_concat!("d", "a", "b", "c").quote()
+ ));
+ assert!(at.file_exists("d/a/b/c"));
+}
+
+#[test]
+#[ignore = "issue #3332"]
+fn test_cp_parents_2_link() {
+ let (at, mut ucmd) = at_and_ucmd!();
+ at.mkdir_all("a/b");
+ at.touch("a/b/c");
+ at.mkdir("d");
+ at.relative_symlink_file("b", "a/link");
+ ucmd.args(&["--verbose", "-a", "--parents", "a/link/c", "d"])
+ .succeeds()
+ .stdout_is(format!(
+ "{} -> {}\n{} -> {}\n{} -> {}\n",
+ "a",
+ path_concat!("d", "a"),
+ path_concat!("a", "link"),
+ path_concat!("d", "a", "link"),
+ path_concat!("a", "link", "c").quote(),
+ path_concat!("d", "a", "link", "c").quote()
+ ));
+ assert!(at.dir_exists("d/a/link") && !at.symlink_exists("d/a/link"));
+ assert!(at.file_exists("d/a/link/c"));
+}
