forked from extern/nushell
return Error if get meet nothing and without "i" (#7002)
This commit is contained in:
parent
9382dd6d55
commit
81a7d17b33
@ -74,7 +74,29 @@ impl Command for Get {
|
||||
Err(_) => Ok(Value::Nothing { span: call.head }.into_pipeline_data()),
|
||||
}
|
||||
} else {
|
||||
output
|
||||
match output {
|
||||
Ok(val) => {
|
||||
let val_check = val.into_value(span);
|
||||
match val_check {
|
||||
Value::List {
|
||||
ref vals,
|
||||
span: spanchild,
|
||||
} => {
|
||||
if vals.iter().any(|unit| unit.is_empty()) {
|
||||
Err(nu_protocol::ShellError::CantFindColumn(
|
||||
"Empty cell".to_string(),
|
||||
spanchild,
|
||||
span,
|
||||
))
|
||||
} else {
|
||||
Ok(val_check.into_pipeline_data())
|
||||
}
|
||||
}
|
||||
val => Ok(val.into_pipeline_data()),
|
||||
}
|
||||
}
|
||||
Err(e) => Err(e),
|
||||
}
|
||||
}
|
||||
} else {
|
||||
let mut output = vec![];
|
||||
@ -87,8 +109,18 @@ impl Command for Get {
|
||||
let val = input.clone().follow_cell_path(&path.members, !sensitive);
|
||||
|
||||
if ignore_errors {
|
||||
if let Ok(val) = val {
|
||||
output.push(val);
|
||||
match val {
|
||||
Ok(Value::Nothing { span: spanchild }) => {
|
||||
return Err(nu_protocol::ShellError::CantFindColumn(
|
||||
"Nothing".to_string(),
|
||||
spanchild,
|
||||
span,
|
||||
));
|
||||
}
|
||||
Ok(val) => {
|
||||
output.push(val);
|
||||
}
|
||||
Err(_) => {}
|
||||
}
|
||||
} else {
|
||||
output.push(val?);
|
||||
|
@ -71,7 +71,7 @@ fn cal_sees_pipeline_year() {
|
||||
let actual = nu!(
|
||||
cwd: ".", pipeline(
|
||||
r#"
|
||||
cal --full-year 1020 | get monday | first 4 | to json -r
|
||||
cal --full-year 1020 | get -i monday | first 4 | to json -r
|
||||
"#
|
||||
));
|
||||
|
||||
|
@ -16,7 +16,7 @@ fn filters_by_unit_size_comparison() {
|
||||
fn filters_with_nothing_comparison() {
|
||||
let actual = nu!(
|
||||
cwd: "tests/fixtures/formats",
|
||||
r#"'[{"foo": 3}, {"foo": null}, {"foo": 4}]' | from json | get foo | compact | where $it > 1 | math sum"#
|
||||
r#"'[{"foo": 3}, {"foo": null}, {"foo": 4}]' | from json | get -i foo | compact | where $it > 1 | math sum"#
|
||||
);
|
||||
|
||||
assert_eq!(actual.out, "7");
|
||||
|
Loading…
Reference in New Issue
Block a user