Make to text stream ListStreams (#7577)

This PR changes `to text` so that when given a `ListStream`, it streams
the incoming values instead of collecting them all first.

The easiest way to observe/verify this PR is to convert a list to a very
slow `ListStream` with `each`:
```bash
ls | get name | each {|n| sleep 1sec; $n} | to text
```
The `to text` output will appear 1 item at a time.
This commit is contained in:
Reilly Wood
2022-12-22 16:38:07 -08:00
committed by GitHub
parent 6fc5244439
commit 9364bad625
3 changed files with 69 additions and 8 deletions

View File

@ -0,0 +1,19 @@
use nu_test_support::nu;
#[test]
fn list_to_text() {
let actual = nu!(r#"["foo" "bar" "baz"] | to text"#);
// these actually have newlines between them in the real world but nu! strips newlines, grr
assert_eq!(actual.out, "foobarbaz");
}
// the output should be the same when `to text` gets a ListStream instead of a Value::List
#[test]
fn list_stream_to_text() {
// use `each` to convert the list to a ListStream
let actual = nu!(r#"["foo" "bar" "baz"] | each {|i| $i} | to text"#);
// these actually have newlines between them in the real world but nu! strips newlines, grr
assert_eq!(actual.out, "foobarbaz");
}