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        #[test_log::test(tokio::test)]
15        #[test_log(default_log_filter = "warn")]
16        #(#attrs)*
17        #vis #sig #block
18    };
19
20    TokenStream::from(expanded)
21}
22
23#[proc_macro_attribute]
24pub fn test(_attr: TokenStream, item: TokenStream) -> TokenStream {
25    let input_fn = parse_macro_input!(item as ItemFn);
26    let attrs = &input_fn.attrs;
27    let vis = &input_fn.vis;
28    let sig = &input_fn.sig;
29    let block = &input_fn.block;
30
31    let expanded = quote! {
32        #[test_log::test]
33        #[test_log(default_log_filter = "warn")]
34        #(#attrs)*
35        #vis #sig #block
36    };
37
38    TokenStream::from(expanded)
39}