diff options
Diffstat (limited to 'src/parse/test_ast.rs')
-rw-r--r-- | src/parse/test_ast.rs | 31 |
1 files changed, 26 insertions, 5 deletions
diff --git a/src/parse/test_ast.rs b/src/parse/test_ast.rs index 09d772b..a1f83dd 100644 --- a/src/parse/test_ast.rs +++ b/src/parse/test_ast.rs @@ -157,13 +157,23 @@ macro_rules! eval_eq { _ => continue, }; assert_eq!( - async_std::task::block_on(pipeline.eval(&$env)).unwrap(), + pipeline.eval(&$env).await.unwrap(), expected.remove(0) ); } }}; } +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(); @@ -175,7 +185,7 @@ macro_rules! eval_fails { } _ => continue, }; - if async_std::task::block_on(pipeline.eval(&$env)).is_err() { + if pipeline.eval(&$env).await.is_err() { fail = true; } } @@ -206,7 +216,7 @@ fn test_basic() { ); // XXX this parse may change in the future - let exe = std::env::current_exe() + let exe = crate::info::current_exe() .unwrap() .into_os_string() .into_string() @@ -223,6 +233,9 @@ fn test_basic() { ) )) ); + + parse_eq!("foo ''", cs!(p!((0, 6), e!(w!("foo"), w!())))); + parse_eq!("foo \"\"", cs!(p!((0, 6), e!(w!("foo"), w!())))); } #[test] @@ -426,8 +439,9 @@ fn test_alternation() { ); } +#[tokio::main] #[test] -fn test_eval_alternation() { +async fn test_eval_alternation() { let mut env = Env::new().unwrap(); env.set_var("HOME", "/home/test"); env.set_var("foo", "value-of-foo"); @@ -464,8 +478,9 @@ fn test_eval_alternation() { ); } +#[tokio::main] #[test] -fn test_eval_glob() { +async fn test_eval_glob() { let env = Env::new().unwrap(); eval_eq!( @@ -484,3 +499,9 @@ 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"))); +} |