Skip to content

Commit ba5f920

Browse files
authored
rm: returns Error when it failed to remove a file (nushell#17237)
Fixes: nushell#14900 The solution is suggested by @sgvictorino ## Release notes summary - What our users need to know rm command will return error when there is one file is failed to remove. ## Tasks after submitting
1 parent c4a87bf commit ba5f920

File tree

3 files changed

+11
-3
lines changed

3 files changed

+11
-3
lines changed

crates/nu-command/src/filesystem/rm.rs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -458,14 +458,21 @@ fn rm(
458458
}
459459
});
460460

461+
let mut cmd_result = Ok(PipelineData::empty());
461462
for result in iter {
462463
engine_state.signals().check(&call.head)?;
463464
match result {
464465
Ok(None) => {}
465466
Ok(Some(msg)) => eprintln!("{msg}"),
466-
Err(err) => report_shell_error(Some(stack), engine_state, &err),
467+
Err(err) => {
468+
if cmd_result.is_ok() {
469+
cmd_result = Err(err);
470+
} else {
471+
report_shell_error(Some(stack), engine_state, &err)
472+
}
473+
}
467474
}
468475
}
469476

470-
Ok(PipelineData::empty())
477+
cmd_result
471478
}

crates/nu-command/tests/commands/rm.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -589,5 +589,6 @@ fn rm_already_in_use() {
589589
);
590590

591591
assert!(outcome.err.contains("nu::shell::io::already_in_use"));
592+
assert!(!outcome.status.success())
592593
})
593594
}

crates/nu-std/tests/test_util.nu

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ def path_add_expand [] {
7474
assert equal (get_path) ([$link_dir])
7575
}
7676

77-
rm $real_dir $link_dir
77+
do -i { rm $real_dir $link_dir }
7878
}
7979

8080
@test

0 commit comments

Comments
 (0)