don't use table compaction in to nuon if not a table (#4671)

* don't use table compaction in to nuon if not a table

* Make a proper nuon conversion test

* more nuon tests
This commit is contained in:
JT 2022-02-28 07:10:02 -05:00 committed by GitHub
parent ef70c8dbe4
commit 10364c4f22
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 106 additions and 1 deletions

View File

@ -65,7 +65,7 @@ fn value_to_string(v: &Value, span: Span) -> Result<String, ShellError> {
Value::Int { val, .. } => Ok(format!("{}", *val)),
Value::List { vals, .. } => {
let headers = get_columns(vals);
if vals.iter().all(|x| x.columns() == headers) {
if !headers.is_empty() && vals.iter().all(|x| x.columns() == headers) {
// Table output
let headers_output = headers.join(", ");

View File

@ -5,6 +5,7 @@ mod html;
mod ics;
mod json;
mod markdown;
mod nuon;
mod ods;
mod sqlite;
mod ssv;

View File

@ -0,0 +1,104 @@
use nu_test_support::{nu, pipeline};
#[test]
fn to_nuon_correct_compaction() {
let actual = nu!(
cwd: "tests/fixtures/formats", pipeline(
r#"
open appveyor.yml
| to nuon
| str length
| $in > 500
"#
));
assert_eq!(actual.out, "true");
}
#[test]
fn to_nuon_list_of_numbers() {
let actual = nu!(
cwd: "tests/fixtures/formats", pipeline(
r#"
[1, 2, 3, 4]
| to nuon
| from nuon
| $in == [1, 2, 3, 4]
"#
));
assert_eq!(actual.out, "true");
}
#[test]
fn to_nuon_list_of_strings() {
let actual = nu!(
cwd: "tests/fixtures/formats", pipeline(
r#"
[abc, xyz, def]
| to nuon
| from nuon
| $in == [abc, xyz, def]
"#
));
assert_eq!(actual.out, "true");
}
#[test]
fn to_nuon_table() {
let actual = nu!(
cwd: "tests/fixtures/formats", pipeline(
r#"
[[my, columns]; [abc, xyz], [def, ijk]]
| to nuon
| from nuon
| $in == [[my, columns]; [abc, xyz], [def, ijk]]
"#
));
assert_eq!(actual.out, "true");
}
#[test]
fn to_nuon_bool() {
let actual = nu!(
cwd: "tests/fixtures/formats", pipeline(
r#"
$false
| to nuon
| from nuon
"#
));
assert_eq!(actual.out, "false");
}
#[test]
fn to_nuon_negative_int() {
let actual = nu!(
cwd: "tests/fixtures/formats", pipeline(
r#"
-1
| to nuon
| from nuon
"#
));
assert_eq!(actual.out, "-1");
}
#[test]
fn to_nuon_records() {
let actual = nu!(
cwd: "tests/fixtures/formats", pipeline(
r#"
{name: "foo bar", age: 100, height: 10}
| to nuon
| from nuon
| $in == {name: "foo bar", age: 100, height: 10}
"#
));
assert_eq!(actual.out, "true");
}