Skip to content

Commit

Permalink
Add remove/replace proc macro e2e tests
Browse files Browse the repository at this point in the history
commit-id:ecc87fd5
  • Loading branch information
maciektr committed Feb 22, 2024
1 parent 67107f3 commit a1be4cb
Showing 1 changed file with 95 additions and 0 deletions.
95 changes: 95 additions & 0 deletions scarb/tests/build_cairo_plugin.rs
Original file line number Diff line number Diff line change
Expand Up @@ -302,3 +302,98 @@ fn can_emit_plugin_diagnostics() {
error: could not compile `hello` due to previous error
"#});
}

#[test]
fn can_remove_original_node() {
let temp = TempDir::new().unwrap();
let t = temp.child("some");
simple_project_with_code(
&t,
indoc! {r#"
use cairo_lang_macro::{ProcMacroResult, TokenStream, attribute_macro};
#[attribute_macro]
pub fn some_macro(token_stream: TokenStream) -> ProcMacroResult {
let _code = token_stream.to_string();
ProcMacroResult::Remove { diagnostics: Vec::new() }
}
"#},
);
let project = temp.child("hello");
ProjectBuilder::start()
.name("hello")
.version("1.0.0")
.dep("some", &t)
.lib_cairo(indoc! {r#"
#[some]
fn main() -> felt252 { 12 }
fn main() -> felt252 { 34 }
#[some]
fn main() -> felt252 { 56 }
"#})
.build(&project);

Scarb::quick_snapbox()
.arg("cairo-run")
// Disable output from Cargo.
.env("CARGO_TERM_QUIET", "true")
.current_dir(&project)
.assert()
.success()
.stdout_matches(indoc! {r#"
[..] Compiling some v1.0.0 ([..]Scarb.toml)
[..] Compiling hello v1.0.0 ([..]Scarb.toml)
[..]Finished release target(s) in [..] seconds
[..]Running hello
Run completed successfully, returning [34]
"#});
}

#[test]
fn can_replace_original_node() {
let temp = TempDir::new().unwrap();
let t = temp.child("some");
simple_project_with_code(
&t,
indoc! {r#"
use cairo_lang_macro::{ProcMacroResult, TokenStream, attribute_macro};
#[attribute_macro]
pub fn some_macro(token_stream: TokenStream) -> ProcMacroResult {
let _code = token_stream.to_string();
ProcMacroResult::Replace {
token_stream: TokenStream::new("fn main() -> felt252 { 34 }".to_string()),
aux_data: None,
diagnostics: Vec::new()
}
}
"#},
);
let project = temp.child("hello");
ProjectBuilder::start()
.name("hello")
.version("1.0.0")
.dep("some", &t)
.lib_cairo(indoc! {r#"
#[some]
fn main() -> felt252 { 12 }
"#})
.build(&project);

Scarb::quick_snapbox()
.arg("cairo-run")
// Disable output from Cargo.
.env("CARGO_TERM_QUIET", "true")
.current_dir(&project)
.assert()
.success()
.stdout_matches(indoc! {r#"
[..] Compiling some v1.0.0 ([..]Scarb.toml)
[..] Compiling hello v1.0.0 ([..]Scarb.toml)
[..]Finished release target(s) in [..] seconds
[..]Running hello
Run completed successfully, returning [34]
"#});
}

0 comments on commit a1be4cb

Please sign in to comment.