forked from extern/nushell
3005fe10e5
related to the namespace bullet point in - https://github.com/nushell/nushell/issues/8450 # Description this was the last module of the standard library with a broken namespace, this PR takes care of this. - `run-tests` has been moved to `std/mod.nu` - `std/testing.nu` has been moved to `std/assert.nu` - the namespace has been fixed - `assert` is now called `main` and used in all the other `std assert` commands - for `std assert length` and `std assert str contains`, in order not to shadow the built-in `length` and `str contains` commands, i've used `alias "core ..." = ...` to (1) define `foo` in `assert.nu` and (2) still use the builtin `foo` with `core foo` (replace `foo` by `length` or `str contains`) - tests have been fixed accordingly # User-Facing Changes one can not use ``` use std "assert equal" ``` anymore because `assert ...` is not exported from `std`. `std assert` is now a *real* module. # Tests + Formatting - 🟢 `toolkit fmt` - 🟢 `toolkit clippy` - ⚫ `toolkit test` - ⚫ `toolkit test stdlib` # After Submitting ``` $nothing ``` # Notes for reviewers to test this, i think the easiest is to - run `toolkit test stdlib` and see all the tests pass - run `cargo run -- -n` and try `use std assert` => are all the commands available in scope?
46 lines
2.3 KiB
Plaintext
46 lines
2.3 KiB
Plaintext
use std xml xaccess
|
|
use std xml xupdate
|
|
use std xml xinsert
|
|
use std assert
|
|
|
|
export def setup [] {
|
|
{sample_xml: ('
|
|
<a>
|
|
<b>
|
|
<c a="b"></c>
|
|
</b>
|
|
<c></c>
|
|
<d>
|
|
<e>z</e>
|
|
<e>x</e>
|
|
</d>
|
|
</a>' | from xml)
|
|
}
|
|
}
|
|
|
|
export def test_xml_xaccess [] {
|
|
let sample_xml = $in.sample_xml
|
|
|
|
assert equal ($sample_xml | xaccess [a]) [$sample_xml]
|
|
assert equal ($sample_xml | xaccess [*]) [$sample_xml]
|
|
assert equal ($sample_xml | xaccess [* d e]) [[tag, attributes, content]; [e, {}, [[tag, attributes, content]; [null, null, z]]], [e, {}, [[tag, attributes, content]; [null, null, x]]]]
|
|
assert equal ($sample_xml | xaccess [* d e 1]) [[tag, attributes, content]; [e, {}, [[tag, attributes, content]; [null, null, x]]]]
|
|
assert equal ($sample_xml | xaccess [* * * {|e| $e.attributes != {}}]) [[tag, attributes, content]; [c, {a: b}, []]]
|
|
}
|
|
|
|
export def test_xml_xupdate [] {
|
|
let sample_xml = $in.sample_xml
|
|
|
|
assert equal ($sample_xml | xupdate [*] {|x| $x | update attributes {i: j}}) ('<a i="j"><b><c a="b"></c></b><c></c><d><e>z</e><e>x</e></d></a>' | from xml)
|
|
assert equal ($sample_xml | xupdate [* d e *] {|x| $x | update content 'nushell'}) ('<a><b><c a="b"></c></b><c></c><d><e>nushell</e><e>nushell</e></d></a>' | from xml)
|
|
assert equal ($sample_xml | xupdate [* * * {|e| $e.attributes != {}}] {|x| $x | update content ['xml']}) {tag: a, attributes: {}, content: [[tag, attributes, content]; [b, {}, [[tag, attributes, content]; [c, {a: b}, [xml]]]], [c, {}, []], [d, {}, [[tag, attributes, content]; [e, {}, [[tag, attributes, content]; [null, null, z]]], [e, {}, [[tag, attributes, content]; [null, null, x]]]]]]}
|
|
}
|
|
|
|
export def test_xml_xinsert [] {
|
|
let sample_xml = $in.sample_xml
|
|
|
|
assert equal ($sample_xml | xinsert [a] {tag: b attributes:{} content: []}) ('<a><b><c a="b"></c></b><c></c><d><e>z</e><e>x</e></d><b></b></a>' | from xml)
|
|
assert equal ($sample_xml | xinsert [a d *] {tag: null attributes: null content: 'n'} | to xml) '<a><b><c a="b"></c></b><c></c><d><e>zn</e><e>xn</e></d></a>'
|
|
assert equal ($sample_xml | xinsert [a *] {tag: null attributes: null content: 'n'}) ('<a><b><c a="b"></c>n</b><c>n</c><d><e>z</e><e>x</e>n</d></a>' | from xml)
|
|
}
|