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}