mirror of
https://github.com/nushell/nushell.git
synced 2025-07-01 07:00:37 +02:00
Make to text
line endings consistent for list (streams) (#14166)
# Description Fixes #14151 where `to text` treats list streams and lists values differently. # User-Facing Changes New line is always added after items in a list or record except for the last item if the `--no-newline` flag is provided.
This commit is contained in:
@ -1,19 +1,54 @@
|
||||
use nu_test_support::nu;
|
||||
|
||||
#[test]
|
||||
fn list_to_text() {
|
||||
let actual = nu!(r#"["foo" "bar" "baz"] | to text"#);
|
||||
const LINE_LEN: usize = if cfg!(target_os = "windows") { 2 } else { 1 };
|
||||
|
||||
// these actually have newlines between them in the real world but nu! strips newlines, grr
|
||||
assert_eq!(actual.out, "foobarbaz");
|
||||
#[test]
|
||||
fn list() {
|
||||
// Using `str length` since nu! strips newlines, grr
|
||||
let actual = nu!(r#"[] | to text | str length"#);
|
||||
assert_eq!(actual.out, "0");
|
||||
|
||||
let actual = nu!(r#"[a] | to text | str length"#);
|
||||
assert_eq!(actual.out, (1 + LINE_LEN).to_string());
|
||||
|
||||
let actual = nu!(r#"[a b] | to text | str length"#);
|
||||
assert_eq!(actual.out, (2 * (1 + LINE_LEN)).to_string());
|
||||
}
|
||||
|
||||
// the output should be the same when `to text` gets a ListStream instead of a Value::List
|
||||
// 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"#);
|
||||
fn list_stream() {
|
||||
let actual = nu!(r#"[] | each {} | to text | str length"#);
|
||||
assert_eq!(actual.out, "0");
|
||||
|
||||
// these actually have newlines between them in the real world but nu! strips newlines, grr
|
||||
assert_eq!(actual.out, "foobarbaz");
|
||||
let actual = nu!(r#"[a] | each {} | to text | str length"#);
|
||||
assert_eq!(actual.out, (1 + LINE_LEN).to_string());
|
||||
|
||||
let actual = nu!(r#"[a b] | each {} | to text | str length"#);
|
||||
assert_eq!(actual.out, (2 * (1 + LINE_LEN)).to_string());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn list_no_newline() {
|
||||
let actual = nu!(r#"[] | to text -n | str length"#);
|
||||
assert_eq!(actual.out, "0");
|
||||
|
||||
let actual = nu!(r#"[a] | to text -n | str length"#);
|
||||
assert_eq!(actual.out, "1");
|
||||
|
||||
let actual = nu!(r#"[a b] | to text -n | str length"#);
|
||||
assert_eq!(actual.out, (2 + LINE_LEN).to_string());
|
||||
}
|
||||
|
||||
// The output should be the same when `to text` gets a ListStream instead of a Value::List.
|
||||
#[test]
|
||||
fn list_stream_no_newline() {
|
||||
let actual = nu!(r#"[] | each {} | to text -n | str length"#);
|
||||
assert_eq!(actual.out, "0");
|
||||
|
||||
let actual = nu!(r#"[a] | each {} | to text -n | str length"#);
|
||||
assert_eq!(actual.out, "1");
|
||||
|
||||
let actual = nu!(r#"[a b] | each {} | to text -n | str length"#);
|
||||
assert_eq!(actual.out, (2 + LINE_LEN).to_string());
|
||||
}
|
||||
|
Reference in New Issue
Block a user