mirror of
https://github.com/nushell/nushell.git
synced 2025-06-30 14:40:06 +02:00
fix compact to handle empty list or record in column (#15213)
If a table contains an empty list or record in one column and both column and -e flags are used, then skip that row. `compact -e` now skips empty values in a column where as before they were ignored. Example: ```nu [["a", "b"]; ["c", "d"], ["h", []]] | compact -e b ``` before ```plain # a b ──────────────────────── 0 c d 1 h [list 0 items] ``` after ```plain # a b ─────────── 0 c d ```
This commit is contained in:
@ -37,3 +37,58 @@ fn discards_empty_rows_by_default() {
|
||||
|
||||
assert_eq!(actual.out, "4");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn discard_empty_list_in_table() {
|
||||
let actual = nu!(pipeline(
|
||||
r#"
|
||||
[["a", "b"]; ["c", "d"], ["h", []]] | compact -e b | length
|
||||
"#
|
||||
));
|
||||
|
||||
assert_eq!(actual.out, "1");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn discard_empty_record_in_table() {
|
||||
let actual = nu!(pipeline(
|
||||
r#"
|
||||
[["a", "b"]; ["c", "d"], ["h", {}]] | compact -e b | length
|
||||
"#
|
||||
));
|
||||
|
||||
assert_eq!(actual.out, "1");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn dont_discard_empty_record_in_table_if_column_not_set() {
|
||||
let actual = nu!(pipeline(
|
||||
r#"
|
||||
[["a", "b"]; ["c", "d"], ["h", {}]] | compact -e | length
|
||||
"#
|
||||
));
|
||||
|
||||
assert_eq!(actual.out, "2");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn dont_discard_empty_list_in_table_if_column_not_set() {
|
||||
let actual = nu!(pipeline(
|
||||
r#"
|
||||
[["a", "b"]; ["c", "d"], ["h", []]] | compact -e | length
|
||||
"#
|
||||
));
|
||||
|
||||
assert_eq!(actual.out, "2");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn dont_discard_null_in_table_if_column_not_set() {
|
||||
let actual = nu!(pipeline(
|
||||
r#"
|
||||
[["a", "b"]; ["c", "d"], ["h", null]] | compact -e | length
|
||||
"#
|
||||
));
|
||||
|
||||
assert_eq!(actual.out, "2");
|
||||
}
|
||||
|
Reference in New Issue
Block a user