test: assert_module

This commit is contained in:
rvcas
2023-06-30 17:21:03 -04:00
parent da0b969865
commit 715752718d
2 changed files with 70 additions and 73 deletions

View File

@@ -94,25 +94,37 @@ pub fn type_name_with_args() -> impl Parser<Token, (String, Option<Vec<String>>)
)
}
#[cfg(test)]
#[macro_use]
mod macros {
#[macro_export]
macro_rules! assert_expr {
($code:expr) => {
let $crate::parser::lexer::LexInfo { tokens, .. } = $crate::parser::lexer::run($code).unwrap();
#[macro_export]
macro_rules! assert_expr {
($code:expr) => {
let $crate::parser::lexer::LexInfo { tokens, .. } = $crate::parser::lexer::run($code).unwrap();
let stream = chumsky::Stream::from_iter($crate::ast::Span::create(tokens.len()), tokens.into_iter());
let stream = chumsky::Stream::from_iter($crate::ast::Span::create(tokens.len()), tokens.into_iter());
let result = $crate::parser::expr::sequence().parse(stream).unwrap();
let result = $crate::parser::expr::sequence().parse(stream).unwrap();
insta::with_settings!({
description => concat!("Code:\n\n", $code),
prepend_module_to_snapshot => false,
omit_expression => true
}, {
insta::assert_debug_snapshot!(result);
});
};
}
insta::with_settings!({
description => concat!("Code:\n\n", $code),
prepend_module_to_snapshot => false,
omit_expression => true
}, {
insta::assert_debug_snapshot!(result);
});
};
}
#[macro_export]
macro_rules! assert_module {
($code:expr) => {
let (module, _) =
parser::module(indoc::indoc!{ $code }, ast::ModuleKind::Validator).expect("Failed to parse code");
insta::with_settings!({
description => concat!("Code:\n\n", indoc::indoc! { $code }),
prepend_module_to_snapshot => false,
omit_expression => true
}, {
insta::assert_debug_snapshot!(module);
});
};
}