diff --git a/examples/greeting/Cargo.toml b/examples/greeting/Cargo.toml index 8d3e5f18..3718a3ea 100644 --- a/examples/greeting/Cargo.toml +++ b/examples/greeting/Cargo.toml @@ -15,4 +15,10 @@ path = "src/main.rs" marine-rs-sdk = "0.6.11" [dev-dependencies] -marine-rs-sdk-test = "0.2.0" +marine-rs-sdk-test = {path="../../../marine-rs-sdk/sdk-test"} + +[build-dependencies] +marine-test-macro-impl = {path="../../../marine-rs-sdk/crates/marine-test-macro-impl"} +quote = "1.0.9" +proc-macro2 = "1.0.26" +marine-rs-sdk-test = {path="../../../marine-rs-sdk/sdk-test"} diff --git a/examples/greeting/build.rs b/examples/greeting/build.rs new file mode 100644 index 00000000..a5febef1 --- /dev/null +++ b/examples/greeting/build.rs @@ -0,0 +1,45 @@ +// build.rs + +use marine_test_macro_impl::marine_test_impl2; + +use proc_macro2::TokenStream; +use quote::quote; +use quote::ToTokens; + +use std::env; +use std::fs; +use std::path::Path; +use std::string::ToString; + +pub fn test_marine_test_token_streams( + config_path: &str, + modules_dir: &str, +) -> Option { + //let marine_item = stream_from_file(&marine_path); + //let test_token_stream = quote::quote! { #marine_item }; + //let buf = marine_path.as_ref().to_path_buf(); + let attrs = quote::quote! {config_path = #config_path, modules_dir = #modules_dir}; + let marine_token_streams = marine_test_impl2(attrs) + .unwrap_or_else(|e| panic!("failed to apply the marine macro due {}", e)); + + //let expanded_item = items_from_file(&expanded_path); + Some(marine_token_streams) +} + +fn main() { + let out_dir = env::var_os("OUT_DIR").unwrap(); + let dest_path = Path::new(&out_dir).join("marine_test_env.rs"); + let tokens = test_marine_test_token_streams("Config.toml", "artifacts").unwrap(); + let tokens=tokens.to_string(); + if cfg!(test) { + fs::write( + &dest_path,&tokens + ).unwrap(); + } + + + println!("out_dir: {}", out_dir.to_str().unwrap()); + println!("code: {}", tokens); + println!("cargo:rerun-if-changed=build.rs"); + println!("cargo:rerun-if-changed=src/main.rs"); +} \ No newline at end of file diff --git a/examples/greeting/src/main.rs b/examples/greeting/src/main.rs index 3c541d4f..559fd4d5 100644 --- a/examples/greeting/src/main.rs +++ b/examples/greeting/src/main.rs @@ -29,6 +29,7 @@ pub fn greeting(name: String) -> String { #[cfg(test)] mod tests { use marine_rs_sdk_test::marine_test; + include!(concat!(env!("OUT_DIR"), "/marine_test_env.rs")); #[marine_test(config_path = "../Config.toml", modules_dir = "../artifacts")] fn empty_string(greeting: marine_test_env::greeting::ModuleInterface) {