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}