mirror of
https://github.com/nushell/nushell.git
synced 2025-04-23 12:48:22 +02:00
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 ```
95 lines
2.0 KiB
Rust
95 lines
2.0 KiB
Rust
use nu_test_support::{nu, pipeline};
|
|
|
|
#[test]
|
|
fn discards_rows_where_given_column_is_empty() {
|
|
let sample_json = r#"
|
|
{
|
|
"amigos": [
|
|
{"name": "Yehuda", "rusty_luck": 1},
|
|
{"name": "JT", "rusty_luck": 1},
|
|
{"name": "Andres", "rusty_luck": 1},
|
|
{"name":"GorbyPuff"}
|
|
]
|
|
}
|
|
"#;
|
|
|
|
let actual = nu!(pipeline(&format!(
|
|
"
|
|
{sample_json}
|
|
| get amigos
|
|
| compact rusty_luck
|
|
| length
|
|
"
|
|
)));
|
|
|
|
assert_eq!(actual.out, "3");
|
|
}
|
|
#[test]
|
|
fn discards_empty_rows_by_default() {
|
|
let actual = nu!(pipeline(
|
|
r#"
|
|
echo "[1,2,3,14,null]"
|
|
| from json
|
|
| compact
|
|
| length
|
|
"#
|
|
));
|
|
|
|
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");
|
|
}
|