mirror of
https://github.com/nushell/nushell
synced 2024-12-27 05:23:11 +00:00
fix ls with empty string (#12086)
# Description Fixes: #12054 It's cause by nu always add `/*` if there is a parameter in ls, then `ls ""` becomes `ls "/*"`. This pr tries to fix it by only append `/` character if pattern is not empty. # User-Facing Changes NaN # Tests + Formatting Done # After Submitting NaN --------- Co-authored-by: Stefan Holderbach <sholderbach@users.noreply.github.com>
This commit is contained in:
parent
71ffd04ae7
commit
9e5f4c3b82
2 changed files with 17 additions and 0 deletions
|
@ -90,6 +90,13 @@ impl Command for Ls {
|
|||
let pattern_arg = opt_for_glob_pattern(engine_state, stack, call, 0)?;
|
||||
let pattern_arg = {
|
||||
if let Some(path) = pattern_arg {
|
||||
// it makes no sense to list an empty string.
|
||||
if path.item.as_ref().is_empty() {
|
||||
return Err(ShellError::FileNotFoundCustom {
|
||||
msg: "empty string('') directory or file does not exist".to_string(),
|
||||
span: path.span,
|
||||
});
|
||||
}
|
||||
match path.item {
|
||||
NuGlob::DoNotExpand(p) => Some(Spanned {
|
||||
item: NuGlob::DoNotExpand(nu_utils::strip_ansi_string_unlikely(p)),
|
||||
|
|
|
@ -701,3 +701,13 @@ fn list_flag_false() {
|
|||
assert_eq!(actual.out, "false");
|
||||
})
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn list_empty_string() {
|
||||
Playground::setup("ls_empty_string", |dirs, sandbox| {
|
||||
sandbox.with_files(vec![EmptyFile("yehuda.txt")]);
|
||||
|
||||
let actual = nu!(cwd: dirs.test(), "ls ''");
|
||||
assert!(actual.err.contains("does not exist"));
|
||||
})
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue