diesel_test_helper/
lib.rs

1extern crate proc_macro2;
2use proc_macro::TokenStream;
3use quote::quote;
4use syn::{parse_macro_input, ItemFn};
5
6/// Since sqlite wasm support has been added, #[wasm_bindgen_test] needs
7/// to be used in the wasm environment. This macro is designed to solve platform test differences.
8#[proc_macro_attribute]
9pub fn test(_: TokenStream, item: TokenStream) -> TokenStream {
10    let ItemFn {
11        sig,
12        vis,
13        block,
14        attrs,
15    } = parse_macro_input!(item as ItemFn);
16
17    let cfgs = quote! {
18        #[cfg_attr(all(target_family = "wasm", target_os = "unknown"), wasm_bindgen_test::wasm_bindgen_test)]
19        #[cfg_attr(not(all(target_family = "wasm", target_os = "unknown")), test)]
20    };
21    quote!(
22        #cfgs
23        #(#attrs)*
24        #vis #sig {
25            #block
26        }
27    )
28    .into()
29}