e2e-macro 0.1.3

Procedural macro for e2e library
Documentation
extern crate proc_macro;

use proc_macro::TokenStream;
use syn::parse_macro_input;

use crate::test_suite::TestSuite;

mod constructor;
mod hooks;
mod test_case;
mod test_suite;

#[proc_macro_attribute]
pub fn test_suite(attr: TokenStream, item: TokenStream) -> TokenStream {
    let suite_name = parse_macro_input!(attr as syn::Lit);
    let input = parse_macro_input!(item as syn::ItemImpl);
    test_suite_impl(suite_name, input)
        .unwrap_or_else(syn::Error::into_compile_error)
        .into()
}

fn test_suite_impl(
    suite_name: syn::Lit,
    input: syn::ItemImpl,
) -> syn::Result<proc_macro2::TokenStream> {
    let suite = TestSuite::from_impl(suite_name, input)?;
    Ok(suite.render())
}