lib.rs 557 B

12345678910111213141516171819
  1. use proc_macro::TokenStream;
  2. use quote::quote;
  3. use syn::{parse_macro_input, ItemFn};
  4. #[proc_macro_attribute]
  5. pub fn integration_test(_attr: TokenStream, item: TokenStream) -> TokenStream {
  6. let item = parse_macro_input!(item as ItemFn);
  7. let name = &item.sig.ident;
  8. let name_str = &item.sig.ident.to_string();
  9. let expanded = quote! {
  10. #item
  11. inventory::submit!(crate::IntegrationTest {
  12. name: concat!(module_path!(), "::", #name_str),
  13. test_fn: #name,
  14. });
  15. };
  16. TokenStream::from(expanded)
  17. }