2020-07-24 09:41:22 +02:00
|
|
|
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#"
|
2023-03-15 06:54:55 +01:00
|
|
|
open jt.xml
|
2020-07-24 09:41:22 +02:00
|
|
|
| to xml
|
|
|
|
| from xml
|
2023-03-12 00:35:42 +01:00
|
|
|
| get content
|
|
|
|
| where tag == channel
|
|
|
|
| get content
|
|
|
|
| flatten
|
|
|
|
| where tag == item
|
|
|
|
| get content
|
|
|
|
| flatten
|
|
|
|
| where tag == guid
|
|
|
|
| get 0.attributes.isPermaLink
|
2020-07-24 09:41:22 +02:00
|
|
|
"#
|
|
|
|
));
|
|
|
|
|
|
|
|
assert_eq!(actual.out, "true");
|
|
|
|
}
|
2024-01-05 22:56:13 +01:00
|
|
|
|
|
|
|
#[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"));
|
|
|
|
}
|
2024-01-14 14:36:53 +01:00
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn to_xml_partial_escape() {
|
|
|
|
let actual = nu!(
|
|
|
|
cwd: "tests/fixtures/formats", pipeline(
|
|
|
|
r#"
|
|
|
|
{
|
|
|
|
tag: a
|
|
|
|
attributes: { a: "'a'\\" }
|
|
|
|
content: [ `'"qwe\` ]
|
|
|
|
} | to xml --partial-escape
|
|
|
|
"#
|
|
|
|
));
|
|
|
|
assert_eq!(actual.out, r#"<a a="'a'\">'"qwe\</a>"#);
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn to_xml_pi_comment_not_escaped() {
|
|
|
|
// PI and comment content should not be escaped
|
|
|
|
let actual = nu!(
|
|
|
|
cwd: "tests/fixtures/formats", pipeline(
|
|
|
|
r#"
|
|
|
|
{
|
|
|
|
tag: a
|
|
|
|
content: [
|
|
|
|
{tag: ?qwe content: `"'<>&`}
|
|
|
|
{tag: ! content: `"'<>&`}
|
|
|
|
]
|
|
|
|
} | to xml
|
|
|
|
"#
|
|
|
|
));
|
|
|
|
assert_eq!(actual.out, r#"<a><?qwe "'<>&?><!--"'<>&--></a>"#);
|
|
|
|
}
|
2024-01-19 12:35:29 +01:00
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn to_xml_self_closed() {
|
|
|
|
let actual = nu!(
|
|
|
|
cwd: "tests/fixtures/formats", pipeline(
|
|
|
|
r#"
|
|
|
|
{
|
|
|
|
tag: root
|
|
|
|
content: [
|
|
|
|
[tag attributes content];
|
|
|
|
[a null null]
|
|
|
|
[b {e: r} null]
|
|
|
|
[c {t: y} []]
|
|
|
|
]
|
|
|
|
} | to xml --self-closed
|
|
|
|
"#
|
|
|
|
));
|
|
|
|
assert_eq!(actual.out, r#"<root><a/><b e="r"/><c t="y"/></root>"#);
|
|
|
|
}
|