use proc_macro::TokenStream;
use quote::quote;
use syn::{parse_macro_input, ItemFn};

#[proc_macro_attribute]
pub fn integration_test(_attr: TokenStream, item: TokenStream) -> TokenStream {
    let item = parse_macro_input!(item as ItemFn);
    let name = &item.sig.ident;
    let name_str = &item.sig.ident.to_string();
    let expanded = quote! {
        #item

        inventory::submit!(IntegrationTest {
            name: concat!(module_path!(), "::", #name_str),
            test_fn: #name,
        });
    };
    TokenStream::from(expanded)
}