Skip to main content

icechunk_macros/
lib.rs

1use proc_macro::TokenStream;
2use quote::quote;
3use syn::{ItemFn, parse_macro_input};
4
5#[proc_macro_attribute]
6pub fn tokio_test(_attr: TokenStream, item: TokenStream) -> TokenStream {
7    let input_fn = parse_macro_input!(item as ItemFn);
8    let attrs = &input_fn.attrs;
9    let vis = &input_fn.vis;
10    let sig = &input_fn.sig;
11    let block = &input_fn.block;
12
13    let expanded = quote! {
14        #[cfg(not(feature = "shuttle"))]
15        #[test_log::test(tokio::test)]
16        #[test_log(default_log_filter = "warn")]
17        #(#attrs)*
18        #vis #sig #block
19    };
20
21    TokenStream::from(expanded)
22}
23
24#[proc_macro_attribute]
25pub fn test(_attr: TokenStream, item: TokenStream) -> TokenStream {
26    let input_fn = parse_macro_input!(item as ItemFn);
27    let attrs = &input_fn.attrs;
28    let vis = &input_fn.vis;
29    let sig = &input_fn.sig;
30    let block = &input_fn.block;
31
32    let expanded = quote! {
33        #[test_log::test]
34        #[test_log(default_log_filter = "warn")]
35        #(#attrs)*
36        #vis #sig #block
37    };
38
39    TokenStream::from(expanded)
40}