summaryrefslogtreecommitdiffstats
path: root/src/parse/test_ast.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/parse/test_ast.rs')
-rw-r--r--src/parse/test_ast.rs16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/parse/test_ast.rs b/src/parse/test_ast.rs
index 94798a3..4ac75ec 100644
--- a/src/parse/test_ast.rs
+++ b/src/parse/test_ast.rs
@@ -164,6 +164,16 @@ macro_rules! eval_eq {
}};
}
+macro_rules! deserialize_eq {
+ ($line:literal, $parsed:expr) => {{
+ use serde::de::IntoDeserializer as _;
+ use serde::Deserialize as _;
+ let exe: Result<_, serde::de::value::Error> =
+ Exe::deserialize($line.into_deserializer());
+ assert_eq!(exe.unwrap(), $parsed);
+ }};
+}
+
macro_rules! eval_fails {
($line:literal, $env:expr) => {{
let ast = Commands::parse($line).unwrap();
@@ -486,3 +496,9 @@ async fn test_eval_glob() {
eval_fails!("echo *.doesnotexist", env);
eval_fails!("echo *.{toml,doesnotexist}", env);
}
+
+#[test]
+fn test_deserialize() {
+ deserialize_eq!("foo", e!(w!("foo")));
+ deserialize_eq!("foo bar baz", e!(w!("foo"), w!("bar"), w!("baz")));
+}