forked from extern/nushell
throw parser error when multiple short flags are defined without whitespace (#6000)
* throw error when multiple short flags are defined without whitespace * add tests
This commit is contained in:
parent
121e8678b6
commit
f85a1d003c
@ -1,5 +1,5 @@
|
|||||||
use nu_test_support::nu;
|
|
||||||
use nu_test_support::playground::Playground;
|
use nu_test_support::playground::Playground;
|
||||||
|
use nu_test_support::{nu, pipeline};
|
||||||
use std::fs;
|
use std::fs;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
@ -18,3 +18,15 @@ def e [arg] {echo $arg}
|
|||||||
assert!(actual.out.contains("My echo\\n\\n"));
|
assert!(actual.out.contains("My echo\\n\\n"));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn def_errors_with_multiple_short_flags() {
|
||||||
|
let actual = nu!(
|
||||||
|
cwd: ".", pipeline(
|
||||||
|
r#"
|
||||||
|
def test-command [ --long(-l)(-o) ] {}
|
||||||
|
"#
|
||||||
|
));
|
||||||
|
|
||||||
|
assert!(actual.err.contains("expected one short flag"));
|
||||||
|
}
|
||||||
|
@ -3126,6 +3126,10 @@ pub fn parse_signature_helper(
|
|||||||
var_id: Some(var_id),
|
var_id: Some(var_id),
|
||||||
default_value: None,
|
default_value: None,
|
||||||
}));
|
}));
|
||||||
|
} else if flags.len() >= 3 {
|
||||||
|
error = error.or_else(|| {
|
||||||
|
Some(ParseError::Expected("one short flag".into(), span))
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
let short_flag = &flags[1];
|
let short_flag = &flags[1];
|
||||||
let short_flag = if !short_flag.starts_with(b"-")
|
let short_flag = if !short_flag.starts_with(b"-")
|
||||||
|
Loading…
Reference in New Issue
Block a user