forked from extern/nushell
Msgpack commands (#12664)
# Description I thought about bringing `nu_plugin_msgpack` in, but that is MPL with a clause that prevents other licenses, so rather than adapt that code I decided to take a crack at just doing it straight from `rmp` to `Value` without any `rmpv` in the middle. It seems like it's probably faster, though I can't say for sure how much with the plugin overhead. @IanManske I started on a `Read` implementation for `RawStream` but just specialized to `from msgpack` here, but I'm thinking after release maybe we can polish it up and make it a real one. It works! # User-Facing Changes New commands: - `from msgpack` - `from msgpackz` - `to msgpack` - `to msgpackz` # Tests + Formatting Pretty thorough tests added for the format deserialization, with a roundtrip for serialization. Some example tests too for both `from msgpack` and `to msgpack`. - 🟢 `toolkit fmt` - 🟢 `toolkit clippy` - 🟢 `toolkit test` - 🟢 `toolkit test stdlib` # After Submitting - [ ] update release notes
This commit is contained in:
28
crates/nu-command/tests/format_conversions/msgpackz.rs
Normal file
28
crates/nu-command/tests/format_conversions/msgpackz.rs
Normal file
@ -0,0 +1,28 @@
|
||||
use nu_test_support::nu;
|
||||
use pretty_assertions::assert_eq;
|
||||
|
||||
#[test]
|
||||
fn sample_roundtrip() {
|
||||
let path_to_sample_nuon = nu_test_support::fs::fixtures()
|
||||
.join("formats")
|
||||
.join("msgpack")
|
||||
.join("sample.nuon");
|
||||
|
||||
let sample_nuon =
|
||||
std::fs::read_to_string(&path_to_sample_nuon).expect("failed to open sample.nuon");
|
||||
|
||||
let outcome = nu!(
|
||||
collapse_output: false,
|
||||
format!(
|
||||
"open '{}' | to msgpackz | from msgpackz | to nuon --indent 4",
|
||||
path_to_sample_nuon.display()
|
||||
)
|
||||
);
|
||||
|
||||
assert!(outcome.status.success());
|
||||
assert!(outcome.err.is_empty());
|
||||
assert_eq!(
|
||||
sample_nuon.replace("\r\n", "\n"),
|
||||
outcome.out.replace("\r\n", "\n")
|
||||
);
|
||||
}
|
Reference in New Issue
Block a user