mirror of
https://github.com/nushell/nushell.git
synced 2024-11-22 08:23:24 +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) => {
|
||||
for file in files {
|
||||
match file {
|
||||
Ok(ref f) => {
|
||||
Ok(f) => {
|
||||
if !target_exists {
|
||||
target_exists = true;
|
||||
}
|
||||
@ -263,7 +263,9 @@ fn rm(
|
||||
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) => {
|
||||
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> {
|
||||
dir_to_clean: &'a Path,
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user