forked from extern/nushell
Fixes #15440 # Description Wraps ListStream stream type from `impl Iterator` to `Peekable<impl Iterator>`, this allows checking for empty streams and treating them as empty values Example: ``` # previously $ glob ? | default -e void > # empty list $ echo '' | default -e void > void #################### # now $ glob ? | default -e void > void $ echo '' | default -e void > void ``` # User-Facing Changes empty list streams will behave as `nothing` values when testing for emptiness # Tests + Formatting - Add 2 tests - clippy OK - fmt OK # After Submitting
This commit is contained in:
@ -1,4 +1,4 @@
|
||||
use nu_test_support::{nu, pipeline};
|
||||
use nu_test_support::{fs::Stub::EmptyFile, nu, pipeline, playground::Playground};
|
||||
|
||||
#[test]
|
||||
fn adds_row_data_if_column_missing() {
|
||||
@ -112,3 +112,41 @@ fn do_not_replace_empty_record() {
|
||||
let actual = nu!(r#"{} | default {a:5} | columns | length"#);
|
||||
assert_eq!(actual.out, "0");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn replace_empty_list_stream() {
|
||||
// This is specific for testing ListStreams when empty behave like other empty values
|
||||
Playground::setup("glob_empty_list", |dirs, sandbox| {
|
||||
sandbox.with_files(&[
|
||||
EmptyFile("yehuda.txt"),
|
||||
EmptyFile("jttxt"),
|
||||
EmptyFile("andres.txt"),
|
||||
]);
|
||||
|
||||
let actual = nu!(
|
||||
cwd: dirs.test(),
|
||||
"glob ? | default -e void",
|
||||
);
|
||||
|
||||
assert_eq!(actual.out, "void");
|
||||
})
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn do_not_replace_non_empty_list_stream() {
|
||||
// This is specific for testing ListStreams when empty behave like other empty values
|
||||
Playground::setup("glob_non_empty_list", |dirs, sandbox| {
|
||||
sandbox.with_files(&[
|
||||
EmptyFile("yehuda.txt"),
|
||||
EmptyFile("jt.rs"),
|
||||
EmptyFile("andres.txt"),
|
||||
]);
|
||||
|
||||
let actual = nu!(
|
||||
cwd: dirs.test(),
|
||||
"glob '*.txt' | default -e void | length",
|
||||
);
|
||||
|
||||
assert_eq!(actual.out, "2");
|
||||
})
|
||||
}
|
||||
|
Reference in New Issue
Block a user