mirror of
https://github.com/nushell/nushell.git
synced 2025-02-16 18:41:44 +01:00
Fix rm
path handling (#11064)
# Description Fixes issue #11061 where `rm` fails to find a file after a `cd`. It looks like the new glob functions do not return absolute file paths which we forgot to account for. # Tests Added a test (fails on current main, but passes with this PR). --------- Co-authored-by: Jakub Žádník <kubouch@gmail.com>
This commit is contained in:
parent
dbdb1f6600
commit
3966c0a9fd
@ -250,7 +250,7 @@ fn rm(
|
|||||||
Ok(files) => {
|
Ok(files) => {
|
||||||
for file in files {
|
for file in files {
|
||||||
match file {
|
match file {
|
||||||
Ok(ref f) => {
|
Ok(f) => {
|
||||||
if !target_exists {
|
if !target_exists {
|
||||||
target_exists = true;
|
target_exists = true;
|
||||||
}
|
}
|
||||||
@ -263,7 +263,9 @@ fn rm(
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
all_targets.entry(f.clone()).or_insert_with(|| target.span);
|
all_targets
|
||||||
|
.entry(nu_path::expand_path_with(f, ¤tdir_path))
|
||||||
|
.or_insert_with(|| target.span);
|
||||||
}
|
}
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
return Err(ShellError::GenericError(
|
return Err(ShellError::GenericError(
|
||||||
|
@ -375,6 +375,21 @@ fn removes_symlink() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn removes_file_after_cd() {
|
||||||
|
Playground::setup("rm_after_cd", |dirs, sandbox| {
|
||||||
|
sandbox.with_files(vec![EmptyFile("delete.txt")]);
|
||||||
|
|
||||||
|
nu!(
|
||||||
|
cwd: dirs.root(),
|
||||||
|
"let file = 'delete.txt'; cd rm_after_cd; rm $file",
|
||||||
|
);
|
||||||
|
|
||||||
|
let path = dirs.test().join("delete.txt");
|
||||||
|
assert!(!path.exists());
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
struct Cleanup<'a> {
|
struct Cleanup<'a> {
|
||||||
dir_to_clean: &'a Path,
|
dir_to_clean: &'a Path,
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user