diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b52e7e78f..dd1781180 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -132,3 +132,4 @@ jobs: run: | cargo test -p scarb --test build_cairo_plugin compile_with_prebuilt_plugins -- --exact cargo test -p scarb --test build_cairo_plugin compile_with_invalid_prebuilt_plugins -- --exact + cargo test -p scarb --test proc_macro_server load_prebuilt_proc_macros -- --exact diff --git a/scarb/tests/proc_macro_server.rs b/scarb/tests/proc_macro_server.rs index b01f865dc..b17790be8 100644 --- a/scarb/tests/proc_macro_server.rs +++ b/scarb/tests/proc_macro_server.rs @@ -12,7 +12,7 @@ use scarb_proc_macro_server_types::methods::expand::ExpandInlineMacroParams; use scarb_test_support::cairo_plugin_project_builder::CairoPluginProjectBuilder; use scarb_test_support::proc_macro_server::ProcMacroClient; use scarb_test_support::proc_macro_server::SIMPLE_MACROS; -use scarb_test_support::project_builder::ProjectBuilder; +use scarb_test_support::project_builder::{Dep, DepBuilder, ProjectBuilder}; #[test] fn defined_macros() { @@ -171,3 +171,32 @@ fn expand_inline() { TokenStream::new("struct A { field: 25 , other_field: macro_call!(12)}".to_string()) ); } + +#[test] +fn load_prebuilt_proc_macros() { + let t = TempDir::new().unwrap(); + + let project = t.child("test_package"); + + ProjectBuilder::start() + .name("test_package") + .version("1.0.0") + .lib_cairo("") + .dep( + "proc_macro_example", + Dep.version("0.1.2").registry("https://scarbs.dev/"), + ) + .build(&project); + + let mut proc_macro_server = ProcMacroClient::new_without_cargo(&project); + + let response = proc_macro_server + .request_and_wait::(ExpandInlineMacroParams { + name: "some".to_string(), + args: TokenStream::new("42".to_string()), + }) + .unwrap(); + + assert_eq!(response.diagnostics, vec![]); + assert_eq!(response.token_stream, TokenStream::new("42".to_string())); +}