forked from extern/nushell
Error on bad row in column path (#2964)
* Error on bad row in column path * Add more pathing tests
This commit is contained in:
parent
42b1287759
commit
52dc04a35a
@ -172,8 +172,8 @@ pub async fn evaluate_baseline_expr(
|
|||||||
let next = item.get_data_by_member(member);
|
let next = item.get_data_by_member(member);
|
||||||
|
|
||||||
match next {
|
match next {
|
||||||
Err(err) => {
|
Err(err) => match &member.unspanned {
|
||||||
if let UnspannedPathMember::String(_name) = &member.unspanned {
|
UnspannedPathMember::String(_name) => {
|
||||||
let possible_matches = did_you_mean(&item, member.as_string());
|
let possible_matches = did_you_mean(&item, member.as_string());
|
||||||
|
|
||||||
match possible_matches {
|
match possible_matches {
|
||||||
@ -187,7 +187,14 @@ pub async fn evaluate_baseline_expr(
|
|||||||
None => return Err(err),
|
None => return Err(err),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
UnspannedPathMember::Int(_row) => {
|
||||||
|
return Err(ShellError::labeled_error(
|
||||||
|
"Unknown row",
|
||||||
|
"unknown row",
|
||||||
|
&member.span,
|
||||||
|
));
|
||||||
|
}
|
||||||
|
},
|
||||||
Ok(next) => {
|
Ok(next) => {
|
||||||
item = next.clone().value.into_value(&tag);
|
item = next.clone().value.into_value(&tag);
|
||||||
}
|
}
|
||||||
|
@ -558,6 +558,54 @@ fn can_process_one_row_from_internal_and_pipes_it_to_stdin_of_external() {
|
|||||||
assert_eq!(actual.out, "nushell");
|
assert_eq!(actual.out, "nushell");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn index_out_of_bounds() {
|
||||||
|
let actual = nu!(
|
||||||
|
cwd: ".",
|
||||||
|
r#"
|
||||||
|
let foo = [1, 2, 3]; echo $foo.5
|
||||||
|
"#
|
||||||
|
);
|
||||||
|
|
||||||
|
assert!(actual.err.contains("unknown row"));
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn index_row() {
|
||||||
|
let actual = nu!(
|
||||||
|
cwd: ".",
|
||||||
|
r#"
|
||||||
|
let foo = [[name]; [joe] [bob]]; echo $foo.1 | to json
|
||||||
|
"#
|
||||||
|
);
|
||||||
|
|
||||||
|
assert_eq!(actual.out, r#"{"name":"bob"}"#);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn index_cell() {
|
||||||
|
let actual = nu!(
|
||||||
|
cwd: ".",
|
||||||
|
r#"
|
||||||
|
let foo = [[name]; [joe] [bob]]; echo $foo.name.1
|
||||||
|
"#
|
||||||
|
);
|
||||||
|
|
||||||
|
assert_eq!(actual.out, "bob");
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn index_cell_alt() {
|
||||||
|
let actual = nu!(
|
||||||
|
cwd: ".",
|
||||||
|
r#"
|
||||||
|
let foo = [[name]; [joe] [bob]]; echo $foo.1.name
|
||||||
|
"#
|
||||||
|
);
|
||||||
|
|
||||||
|
assert_eq!(actual.out, "bob");
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn echoing_ranges() {
|
fn echoing_ranges() {
|
||||||
let actual = nu!(
|
let actual = nu!(
|
||||||
|
Loading…
Reference in New Issue
Block a user