1
Fork 0
mirror of https://github.com/RGBCube/uutils-coreutils synced 2025-07-27 19:17:43 +00:00

cp: modify archive flag to copy dir contents rather than dir

This commit is contained in:
David Matos 2022-09-18 20:25:14 +02:00
parent bc0273f48f
commit fe4da2b8e5
2 changed files with 12 additions and 1 deletions

View file

@ -93,7 +93,7 @@ impl<'a> Context<'a> {
fn new(root: &'a Path, target: &'a Path) -> std::io::Result<Self> { fn new(root: &'a Path, target: &'a Path) -> std::io::Result<Self> {
let current_dir = env::current_dir()?; let current_dir = env::current_dir()?;
let root_path = current_dir.join(root); let root_path = current_dir.join(root);
let root_parent = if target.exists() { let root_parent = if target.exists() && !root.to_str().unwrap().ends_with("/.") {
root_path.parent().map(|p| p.to_path_buf()) root_path.parent().map(|p| p.to_path_buf())
} else { } else {
Some(root_path) Some(root_path)

View file

@ -2532,3 +2532,14 @@ fn test_src_base_dot() {
.no_stdout(); .no_stdout();
assert!(!at.dir_exists("y/x")); assert!(!at.dir_exists("y/x"));
} }
#[test]
#[cfg(not(windows))]
fn test_cp_archive_on_directory_ending_dot() {
let (at, mut ucmd) = at_and_ucmd!();
at.mkdir("dir1");
at.mkdir("dir2");
at.touch("dir1/file");
ucmd.args(&["-a", "dir1/.", "dir2"]).succeeds();
assert!(at.file_exists("dir2/file"));
}