use proc_macro::TokenStream;
use proc_macro2::TokenStream as Tokens;
use quote::quote;
use syn::{
parse_macro_input,
ItemFn,
};
#[proc_macro_attribute]
pub fn rstest(attr: TokenStream, item: TokenStream) -> TokenStream {
let ItemFn { attrs, vis, sig, block } = parse_macro_input!(item as ItemFn);
let internal_attr = if attr.is_empty() {
quote! {}
} else {
let attr_tokens: Tokens = attr.into();
quote! { #[ #attr_tokens ] }
};
quote! {
#[ ::test_log::test(::rstest::rstest) ]
#(#attrs)*
#internal_attr
#vis #sig #block
}
.into()
}