Fix "Index out of bounds" when input to the group-by filter is empty. #4369 (#4382)

* Fix "index out of bounds" when input to group-by is empty #4369

* Fix formatting #4369

* Adds test for empty input

Co-authored-by: Ray Henry <ray.henry@thermofisher.com>
This commit is contained in:
Ray Henry 2022-02-09 09:47:47 -05:00 committed by GitHub
parent f9e1c4ef50
commit 94ab981235
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 16 additions and 2 deletions

View File

@ -95,8 +95,6 @@ pub fn group_by(
let mut keys: Vec<Result<String, ShellError>> = vec![];
let mut group_strategy = Grouper::ByColumn(None);
let first = values[0].clone();
if values.is_empty() {
return Err(ShellError::SpannedLabeledError(
"expected table from pipeline".into(),
@ -105,6 +103,8 @@ pub fn group_by(
));
}
let first = values[0].clone();
let value_list = Value::List {
vals: values.clone(),
span: name,

View File

@ -97,3 +97,17 @@ fn errors_if_block_given_evaluates_more_than_one_row() {
assert!(actual.err.contains("Unknown column"));
})
}
#[test]
fn errors_if_input_empty() {
Playground::setup("group_by_empty_test", |dirs, _sandbox| {
let actual = nu!(
cwd: dirs.test(), pipeline(
r#"
group-by date
"#
));
assert!(actual.err.contains("expected table from pipeline"));
});
}