Skip to content

Commit

Permalink
Add v2 macro api tests
Browse files Browse the repository at this point in the history
  • Loading branch information
maciektr committed Mar 3, 2025
1 parent 77810b6 commit d44d403
Show file tree
Hide file tree
Showing 12 changed files with 3,107 additions and 52 deletions.
23 changes: 22 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ jobs:
- uses: Swatinem/rust-cache@v2
- uses: taiki-e/install-action@nextest
- name: nextest archive
run: cargo nextest archive --workspace --all-features --cargo-profile ci --archive-file 'nextest-archive-${{ matrix.platform.os }}.tar.zst' --exclude scarb-prove --exclude scarb-verify
run: cargo nextest archive --workspace --all-features --cargo-profile ci --archive-file 'nextest-archive-${{ matrix.platform.os }}.tar.zst' --exclude scarb-prove --exclude scarb-verify --exclude cairo-lang-macro
- uses: actions/upload-artifact@v4
with:
name: nextest-archive-${{ matrix.platform.os }}
Expand Down Expand Up @@ -123,6 +123,27 @@ jobs:
- name: Run scarb-prove and scarb-verify tests
run: cargo +${{ env.RUST_NIGHTLY_TOOLCHAIN }} test -p scarb-prove -p scarb-verify --profile=ci

test-cairo-lang-macro:
name: test cairo-lang-macro ${{ matrix.platform.name }}
runs-on: ${{ matrix.platform.os }}
strategy:
fail-fast: false
matrix:
platform:
- name: linux x86-64
os: ubuntu-latest
- name: windows x86-64
os: windows-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Run tests
# Note tests depending on trybuild crate cannot be run with nextest,
# as they require access to cargo build cache of the package,
# which is not archived with nextest-archive.
run: cargo test -p cairo-lang-macro --all-features

check-rust:
runs-on: ubuntu-latest
steps:
Expand Down
4 changes: 2 additions & 2 deletions plugins_v2/cairo-lang-macro/tests/args/args_01.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ error: only `parent` argument is supported
| ^

warning: unused imports: `ProcMacroResult` and `TokenStream`
--> tests/args/args_01.rs:1:41
--> tests/args/args_01.rs:1:44
|
1 | use cairo_lang_macro_v2::{attribute_macro, ProcMacroResult, TokenStream};
| ^^^^^^^^^^^^^^^ ^^^^^^^^^^^
| ^^^^^^^^^^^^^^^ ^^^^^^^^^^^
|
= note: `#[warn(unused_imports)]` on by default
4 changes: 2 additions & 2 deletions plugins_v2/cairo-lang-macro/tests/args/args_02.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ error: `parent` argument is not a valid path
| ^^^^^

warning: unused imports: `ProcMacroResult` and `TokenStream`
--> tests/args/args_02.rs:1:41
--> tests/args/args_02.rs:1:44
|
1 | use cairo_lang_macro_v2::{attribute_macro, ProcMacroResult, TokenStream};
| ^^^^^^^^^^^^^^^ ^^^^^^^^^^^
| ^^^^^^^^^^^^^^^ ^^^^^^^^^^^
|
= note: `#[warn(unused_imports)]` on by default
4 changes: 2 additions & 2 deletions plugins_v2/cairo-lang-macro/tests/args/args_03.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ error: inline macro cannot use `parent` argument
| ^^^^^^^^

warning: unused imports: `MACRO_DEFINITIONS_SLICE`, `ProcMacroResult`, and `TokenStream`
--> tests/args/args_03.rs:1:38
--> tests/args/args_03.rs:1:41
|
1 | use cairo_lang_macro_v2::{inline_macro, ProcMacroResult, TokenStream, MACRO_DEFINITIONS_SLICE};
| ^^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^
| ^^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^
|
= note: `#[warn(unused_imports)]` on by default
66 changes: 34 additions & 32 deletions scarb/tests/build_cairo_plugin.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ use snapbox::assert_matches;
#[test]
fn compile_cairo_plugin() {
let t = TempDir::new().unwrap();
CairoPluginProjectBuilder::default().build(&t);
CairoPluginProjectBuilder::default_v1().build(&t);
let output = Scarb::quick_snapbox()
.arg("build")
// Disable colors in Cargo output.
Expand Down Expand Up @@ -42,7 +42,7 @@ fn compile_cairo_plugin() {
#[test]
fn check_cairo_plugin() {
let t = TempDir::new().unwrap();
CairoPluginProjectBuilder::default().build(&t);
CairoPluginProjectBuilder::default_v1().build(&t);
let output = Scarb::quick_snapbox()
.arg("check")
// Disable colors in Cargo output.
Expand Down Expand Up @@ -75,10 +75,12 @@ fn check_cairo_plugin() {
fn can_check_cairo_project_with_plugins() {
let temp = TempDir::new().unwrap();
let t = temp.child("some");
CairoPluginProjectBuilder::default().build(&t);
CairoPluginProjectBuilder::default_v1().build(&t);
let project = temp.child("hello");
let y = project.child("other");
CairoPluginProjectBuilder::default().name("other").build(&y);
CairoPluginProjectBuilder::default_v1()
.name("other")
.build(&y);
WorkspaceBuilder::start()
.add_member("other")
.package(
Expand Down Expand Up @@ -106,7 +108,7 @@ fn can_check_cairo_project_with_plugins() {
#[test]
fn resolve_fetched_plugins() {
let t = TempDir::new().unwrap();
CairoPluginProjectBuilder::default().build(&t);
CairoPluginProjectBuilder::default_v1().build(&t);
assert!(!t.child("Cargo.lock").exists());
let output = Scarb::quick_snapbox()
.arg("fetch")
Expand All @@ -126,7 +128,7 @@ fn resolve_fetched_plugins() {
#[test]
fn can_use_json_output() {
let t = TempDir::new().unwrap();
CairoPluginProjectBuilder::default().build(&t);
CairoPluginProjectBuilder::default_v1().build(&t);
let output = Scarb::quick_snapbox()
.arg("--json")
.arg("check")
Expand Down Expand Up @@ -211,7 +213,7 @@ fn compile_cairo_plugin_with_other_target() {
fn can_emit_plugin_warning() {
let temp = TempDir::new().unwrap();
let t = temp.child("some");
CairoPluginProjectBuilder::default()
CairoPluginProjectBuilder::default_v1()
.lib_rs(indoc! {r#"
use cairo_lang_macro::{ProcMacroResult, TokenStream, attribute_macro, Diagnostic};
Expand Down Expand Up @@ -257,7 +259,7 @@ fn can_emit_plugin_warning() {
fn can_emit_plugin_error() {
let temp = TempDir::new().unwrap();
let t = temp.child("some");
CairoPluginProjectBuilder::default()
CairoPluginProjectBuilder::default_v1()
.lib_rs(indoc! {r#"
use cairo_lang_macro::{ProcMacroResult, TokenStream, attribute_macro, Diagnostic};
Expand Down Expand Up @@ -303,7 +305,7 @@ fn can_emit_plugin_error() {
fn diags_from_generated_code_mapped_correctly() {
let temp = TempDir::new().unwrap();
let t = temp.child("some");
CairoPluginProjectBuilder::default()
CairoPluginProjectBuilder::default_v1()
.lib_rs(indoc! {r#"
use cairo_lang_macro::{ProcMacroResult, TokenStream, attribute_macro, Diagnostic};
Expand Down Expand Up @@ -357,7 +359,7 @@ fn diags_from_generated_code_mapped_correctly() {
fn can_remove_original_node() {
let temp = TempDir::new().unwrap();
let t = temp.child("some");
CairoPluginProjectBuilder::default()
CairoPluginProjectBuilder::default_v1()
.lib_rs(indoc! {r#"
use cairo_lang_macro::{ProcMacroResult, TokenStream, attribute_macro};
Expand Down Expand Up @@ -405,7 +407,7 @@ fn can_remove_original_node() {
fn can_replace_original_node() {
let temp = TempDir::new().unwrap();
let t = temp.child("some");
CairoPluginProjectBuilder::default()
CairoPluginProjectBuilder::default_v1()
.lib_rs(indoc! {r##"
use cairo_lang_macro::{ProcMacroResult, TokenStream, attribute_macro};
Expand Down Expand Up @@ -453,7 +455,7 @@ fn can_replace_original_node() {
fn can_return_aux_data_from_plugin() {
let temp = TempDir::new().unwrap();
let t = temp.child("some");
CairoPluginProjectBuilder::default()
CairoPluginProjectBuilder::default_v1()
.lib_rs(indoc! {r##"
use cairo_lang_macro::{ProcMacroResult, TokenStream, attribute_macro, AuxData, PostProcessContext, post_process};
use serde::{Serialize, Deserialize};
Expand Down Expand Up @@ -523,7 +525,7 @@ fn can_return_aux_data_from_plugin() {
fn can_read_token_stream_metadata() {
let temp = TempDir::new().unwrap();
let t = temp.child("some");
CairoPluginProjectBuilder::default()
CairoPluginProjectBuilder::default_v1()
.lib_rs(indoc! {r##"
use cairo_lang_macro::{ProcMacroResult, TokenStream, attribute_macro};
Expand Down Expand Up @@ -573,7 +575,7 @@ fn can_read_token_stream_metadata() {
fn can_define_multiple_macros() {
let temp = TempDir::new().unwrap();
let t = temp.child("some");
CairoPluginProjectBuilder::default()
CairoPluginProjectBuilder::default_v1()
.lib_rs(indoc! {r##"
use cairo_lang_macro::{ProcMacroResult, TokenStream, attribute_macro, AuxData, PostProcessContext, post_process};
Expand Down Expand Up @@ -607,7 +609,7 @@ fn can_define_multiple_macros() {
.build(&t);

let w = temp.child("other");
CairoPluginProjectBuilder::default()
CairoPluginProjectBuilder::default_v1()
.name("other")
.lib_rs(indoc! {r##"
use cairo_lang_macro::{ProcMacroResult, TokenStream, attribute_macro, AuxData, PostProcessContext, post_process};
Expand Down Expand Up @@ -668,7 +670,7 @@ fn can_define_multiple_macros() {
fn cannot_duplicate_macros() {
let temp = TempDir::new().unwrap();
let t = temp.child("some");
CairoPluginProjectBuilder::default()
CairoPluginProjectBuilder::default_v1()
.lib_rs(indoc! {r##"
use cairo_lang_macro::{ProcMacroResult, TokenStream, attribute_macro};
Expand Down Expand Up @@ -708,7 +710,7 @@ fn cannot_duplicate_macros() {
fn cannot_duplicate_macros_across_packages() {
let temp = TempDir::new().unwrap();
let t = temp.child("some");
CairoPluginProjectBuilder::default()
CairoPluginProjectBuilder::default_v1()
.lib_rs(indoc! {r#"
use cairo_lang_macro::{ProcMacroResult, TokenStream, attribute_macro};
Expand All @@ -725,7 +727,7 @@ fn cannot_duplicate_macros_across_packages() {
.build(&t);

let w = temp.child("other");
CairoPluginProjectBuilder::default()
CairoPluginProjectBuilder::default_v1()
.name("other")
.lib_rs(indoc! {r#"
use cairo_lang_macro::{ProcMacroResult, TokenStream, attribute_macro};
Expand All @@ -738,7 +740,7 @@ fn cannot_duplicate_macros_across_packages() {
.build(&w);

let p = temp.child("pkg");
CairoPluginProjectBuilder::default()
CairoPluginProjectBuilder::default_v1()
.name("pkg")
.lib_rs(indoc! {r#"
use cairo_lang_macro::{ProcMacroResult, TokenStream, attribute_macro};
Expand Down Expand Up @@ -785,7 +787,7 @@ fn cannot_duplicate_macros_across_packages() {
fn cannot_use_undefined_macro() {
let temp = TempDir::new().unwrap();
let t = temp.child("some");
CairoPluginProjectBuilder::default()
CairoPluginProjectBuilder::default_v1()
.lib_rs(indoc! {r##"
use cairo_lang_macro::{ProcMacroResult, TokenStream, attribute_macro};
Expand Down Expand Up @@ -829,7 +831,7 @@ fn cannot_use_undefined_macro() {
fn can_resolve_full_path_markers() {
let temp = TempDir::new().unwrap();
let t = temp.child("some");
CairoPluginProjectBuilder::default()
CairoPluginProjectBuilder::default_v1()
.lib_rs(indoc! {r##"
use cairo_lang_macro::{ProcMacroResult, TokenStream, attribute_macro, post_process, PostProcessContext};
Expand Down Expand Up @@ -884,7 +886,7 @@ fn can_resolve_full_path_markers() {
fn can_implement_inline_macro() {
let temp = TempDir::new().unwrap();
let t = temp.child("some");
CairoPluginProjectBuilder::default()
CairoPluginProjectBuilder::default_v1()
.lib_rs(indoc! {r##"
use cairo_lang_macro::{ProcMacroResult, TokenStream, inline_macro};
Expand Down Expand Up @@ -930,7 +932,7 @@ fn can_implement_inline_macro() {
fn empty_inline_macro_result() {
let temp = TempDir::new().unwrap();
let t = temp.child("some");
CairoPluginProjectBuilder::default()
CairoPluginProjectBuilder::default_v1()
.lib_rs(indoc! {r##"
use cairo_lang_macro::{ProcMacroResult, TokenStream, inline_macro};
Expand Down Expand Up @@ -976,7 +978,7 @@ fn empty_inline_macro_result() {
fn can_implement_derive_macro() {
let temp = TempDir::new().unwrap();
let t = temp.child("some");
CairoPluginProjectBuilder::default()
CairoPluginProjectBuilder::default_v1()
.lib_rs(indoc! {r##"
use cairo_lang_macro::{derive_macro, ProcMacroResult, TokenStream};
Expand Down Expand Up @@ -1051,7 +1053,7 @@ fn can_implement_derive_macro() {
fn can_use_both_derive_and_attr() {
let temp = TempDir::new().unwrap();
let t = temp.child("some");
CairoPluginProjectBuilder::default()
CairoPluginProjectBuilder::default_v1()
.lib_rs(indoc! {r##"
use cairo_lang_macro::{derive_macro, attribute_macro, ProcMacroResult, TokenStream};
Expand Down Expand Up @@ -1133,7 +1135,7 @@ fn can_use_both_derive_and_attr() {
fn can_read_attribute_args() {
let temp = TempDir::new().unwrap();
let t = temp.child("some");
CairoPluginProjectBuilder::default()
CairoPluginProjectBuilder::default_v1()
.lib_rs(indoc! {r##"
use cairo_lang_macro::{ProcMacroResult, TokenStream, attribute_macro};
Expand Down Expand Up @@ -1182,7 +1184,7 @@ fn can_read_attribute_args() {
fn can_create_executable_attribute() {
let temp = TempDir::new().unwrap();
let t = temp.child("some");
CairoPluginProjectBuilder::default()
CairoPluginProjectBuilder::default_v1()
.lib_rs(indoc! {r##"
use cairo_lang_macro::executable_attribute;
Expand Down Expand Up @@ -1238,7 +1240,7 @@ fn can_create_executable_attribute() {
fn executable_name_cannot_clash_attr() {
let temp = TempDir::new().unwrap();
let t = temp.child("some");
CairoPluginProjectBuilder::default()
CairoPluginProjectBuilder::default_v1()
.lib_rs(indoc! {r##"
use cairo_lang_macro::{executable_attribute, attribute_macro, TokenStream, ProcMacroResult};
Expand Down Expand Up @@ -1281,7 +1283,7 @@ fn executable_name_cannot_clash_attr() {
fn can_be_expanded() {
let temp = TempDir::new().unwrap();
let t = temp.child("some");
CairoPluginProjectBuilder::default()
CairoPluginProjectBuilder::default_v1()
.lib_rs(indoc! {r##"
use cairo_lang_macro::{ProcMacroResult, TokenStream, attribute_macro, derive_macro};
Expand Down Expand Up @@ -1390,7 +1392,7 @@ fn can_be_expanded() {
fn can_expand_trait_inner_func_attrr() {
let temp = TempDir::new().unwrap();
let t = temp.child("some");
CairoPluginProjectBuilder::default()
CairoPluginProjectBuilder::default_v1()
.lib_rs(indoc! {r##"
use cairo_lang_macro::{attribute_macro, ProcMacroResult, TokenStream};
Expand Down Expand Up @@ -1452,7 +1454,7 @@ fn can_expand_trait_inner_func_attrr() {
fn can_expand_impl_inner_func_attrr() {
let temp = TempDir::new().unwrap();
let t = temp.child("some");
CairoPluginProjectBuilder::default()
CairoPluginProjectBuilder::default_v1()
.lib_rs(indoc! {r##"
use cairo_lang_macro::{attribute_macro, ProcMacroResult, TokenStream};
Expand Down Expand Up @@ -1564,7 +1566,7 @@ fn can_expand_impl_inner_func_attrr() {
fn can_be_used_through_re_export() {
let temp = TempDir::new().unwrap();
let t = temp.child("some");
CairoPluginProjectBuilder::default()
CairoPluginProjectBuilder::default_v1()
.lib_rs(indoc! {r##"
use cairo_lang_macro::{ProcMacroResult, TokenStream, attribute_macro};
Expand Down
Loading

0 comments on commit d44d403

Please sign in to comment.