forked from extern/nushell
5f7425a7b4
# Description Fixes #11264 This PR adds checks in `to xml` to output error for malformed xml entries: * With columns that are not one of `tag`, `attributes` or `content` * With no `tag` when entry is not a string * With `tag` that is not a string This PR also replaces `attrs` with `attributes` in example and extra_usage of `to xml` (column was originally named attrs and renamed to attributes, but this was missed in docs) # User-Facing Changes `to xml` will produce error for conditions described above instead of silently returning nothing # Tests + Formatting Added tests for `to xml` to check handling of malformed xml entries
61 lines
1.3 KiB
Rust
61 lines
1.3 KiB
Rust
use nu_test_support::{nu, pipeline};
|
|
|
|
#[test]
|
|
fn table_to_xml_text_and_from_xml_text_back_into_table() {
|
|
let actual = nu!(
|
|
cwd: "tests/fixtures/formats", pipeline(
|
|
r#"
|
|
open jt.xml
|
|
| to xml
|
|
| from xml
|
|
| get content
|
|
| where tag == channel
|
|
| get content
|
|
| flatten
|
|
| where tag == item
|
|
| get content
|
|
| flatten
|
|
| where tag == guid
|
|
| get 0.attributes.isPermaLink
|
|
"#
|
|
));
|
|
|
|
assert_eq!(actual.out, "true");
|
|
}
|
|
|
|
#[test]
|
|
fn to_xml_error_unknown_column() {
|
|
let actual = nu!(
|
|
cwd: "tests/fixtures/formats", pipeline(
|
|
r#"
|
|
{tag: a bad_column: b} | to xml
|
|
"#
|
|
));
|
|
|
|
assert!(actual.err.contains("Invalid column \"bad_column\""));
|
|
}
|
|
|
|
#[test]
|
|
fn to_xml_error_no_tag() {
|
|
let actual = nu!(
|
|
cwd: "tests/fixtures/formats", pipeline(
|
|
r#"
|
|
{attributes: {a: b c: d}} | to xml
|
|
"#
|
|
));
|
|
|
|
assert!(actual.err.contains("Tag missing"));
|
|
}
|
|
|
|
#[test]
|
|
fn to_xml_error_tag_not_string() {
|
|
let actual = nu!(
|
|
cwd: "tests/fixtures/formats", pipeline(
|
|
r#"
|
|
{tag: 1 attributes: {a: b c: d}} | to xml
|
|
"#
|
|
));
|
|
|
|
assert!(actual.err.contains("not a string"));
|
|
}
|