Skip to content

Commit 386acd0

Browse files
authored
Merge pull request #8412 from julian-klode/fix-install-no-target-existing-target
install: Fix --no-target-directory with existing file
2 parents 79bbf52 + 190ddd1 commit 386acd0

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

src/uu/install/src/install.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -607,7 +607,7 @@ fn standard(mut paths: Vec<String>, b: &Behavior) -> UResult<()> {
607607
return Err(InstallError::OmittingDirectory(source.clone()).into());
608608
}
609609

610-
if b.no_target_dir && target.exists() {
610+
if b.no_target_dir && target.is_dir() {
611611
return Err(
612612
InstallError::OverrideDirectoryFailed(target.clone(), source.clone()).into(),
613613
);

tests/by-util/test_install.rs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2082,6 +2082,20 @@ fn test_install_no_target_directory_failing_cannot_overwrite() {
20822082
assert!(!at.dir_exists("dir/file"));
20832083
}
20842084

2085+
#[test]
2086+
fn test_install_no_target_directory_overwrite_file() {
2087+
let scene = TestScenario::new(util_name!());
2088+
let at = &scene.fixtures;
2089+
let file = "file";
2090+
let dest = "dest";
2091+
2092+
at.touch(file);
2093+
scene.ucmd().arg("-T").arg(file).arg(dest).succeeds();
2094+
scene.ucmd().arg("-T").arg(file).arg(dest).succeeds();
2095+
2096+
assert!(!at.dir_exists("dir/file"));
2097+
}
2098+
20852099
#[test]
20862100
fn test_install_no_target_directory_failing_omitting_directory() {
20872101
let scene = TestScenario::new(util_name!());

0 commit comments

Comments
 (0)