This is an automated email from the ASF dual-hosted git repository. mgrigorov pushed a commit to branch run-derive-ui-tests-only-for-msrv in repository https://gitbox.apache.org/repos/asf/avro-rs.git
commit b2abe71a68647e118ce2882d6ae63e94a15ab4ce Author: Martin Tzvetanov Grigorov <[email protected]> AuthorDate: Thu Mar 5 14:36:06 2026 +0200 chore: Detect MSRV builds and run derive UI tests --- Cargo.lock | 2 +- avro_derive/Cargo.toml | 3 +-- avro_derive/build.rs | 15 ++++++++++----- avro_derive/tests/ui.rs | 2 +- .../tests/ui/avro_rs_226_skip_serializing.stderr | 6 ++---- .../tests/ui/avro_rs_226_skip_serializing_if.stderr | 6 ++---- avro_derive/tests/ui/avro_rs_373_alias.stderr | 14 ++------------ avro_derive/tests/ui/avro_rs_373_field_rename.stderr | 14 ++------------ avro_derive/tests/ui/avro_rs_373_flatten.stderr | 14 ++------------ avro_derive/tests/ui/avro_rs_373_name.stderr | 20 ++------------------ avro_derive/tests/ui/avro_rs_373_remote.stderr | 8 ++------ avro_derive/tests/ui/avro_rs_373_rename_all.stderr | 20 ++------------------ avro_derive/tests/ui/avro_rs_373_skip.stderr | 14 ++------------ .../tests/ui/avro_rs_373_tag_content_enum.stderr | 8 ++------ avro_derive/tests/ui/avro_rs_373_tag_enum.stderr | 8 ++------ avro_derive/tests/ui/avro_rs_373_tag_struct.stderr | 8 ++------ .../tests/ui/avro_rs_373_untagged_enum.stderr | 8 ++------ .../tests/ui/avro_rs_373_variant_rename.stderr | 14 ++------------ .../ui/avro_rs_397_with_closure_parameters.stderr | 7 +++---- .../tests/ui/avro_rs_397_with_expr_string.stderr | 5 ++--- .../ui/avro_rs_397_with_word_without_serde.stderr | 5 ++--- avro_derive/tests/ui/avro_rs_398_transparent.stderr | 15 ++++----------- .../tests/ui/avro_rs_398_transparent_skips.stderr | 10 ++-------- 23 files changed, 54 insertions(+), 172 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index bc2d38a..26d129e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -105,7 +105,7 @@ dependencies = [ "proc-macro2", "proptest", "quote", - "rustversion", + "rustc_version", "serde", "serde_json", "syn", diff --git a/avro_derive/Cargo.toml b/avro_derive/Cargo.toml index c86f9d6..7746c2b 100644 --- a/avro_derive/Cargo.toml +++ b/avro_derive/Cargo.toml @@ -43,12 +43,11 @@ uuid = { workspace = true } apache-avro = { default-features = false, path = "../avro", features = ["derive"] } pretty_assertions = { workspace = true } proptest = { default-features = false, version = "1.10.0", features = ["std"] } -rustversion = "1.0.22" serde = { workspace = true } trybuild = "1.0.116" [build-dependencies] -rustversion = "1.0.22" +rustc_version = "0.4" [package.metadata.docs.rs] rustdoc-args = ["--cfg", "docsrs"] diff --git a/avro_derive/build.rs b/avro_derive/build.rs index 40e33af..17c2431 100644 --- a/avro_derive/build.rs +++ b/avro_derive/build.rs @@ -20,10 +20,15 @@ //! We would prefer to just do `#![rustversion::attr(nightly, feature(proc_macro_diagnostic)]` //! but that's currently not possible, see <https://github.com/dtolnay/rustversion/issues/8> -#[rustversion::nightly] +use rustc_version::version; + fn main() { - println!("cargo:rustc-cfg=nightly"); -} + println!("cargo::rustc-check-cfg=cfg(msrv)"); + let msrv = std::env::var("CARGO_PKG_RUST_VERSION").unwrap(); + let current = version().unwrap().to_string(); + + if current == msrv { + println!(r#"cargo:rustc-cfg=msrv"#); + } -#[rustversion::not(nightly)] -fn main() {} +} diff --git a/avro_derive/tests/ui.rs b/avro_derive/tests/ui.rs index 9b9fd7d..5db1718 100644 --- a/avro_derive/tests/ui.rs +++ b/avro_derive/tests/ui.rs @@ -18,7 +18,7 @@ /// These tests only run on nightly as the output can change per compiler version. /// /// See <https://github.com/dtolnay/trybuild/issues/84> -#[rustversion::attr(not(nightly), ignore)] +#[cfg_attr(not(msrv), ignore)] #[test] fn ui() { let t = trybuild::TestCases::new(); diff --git a/avro_derive/tests/ui/avro_rs_226_skip_serializing.stderr b/avro_derive/tests/ui/avro_rs_226_skip_serializing.stderr index d5316b5..b37b8e3 100644 --- a/avro_derive/tests/ui/avro_rs_226_skip_serializing.stderr +++ b/avro_derive/tests/ui/avro_rs_226_skip_serializing.stderr @@ -1,7 +1,5 @@ error: `#[serde(skip_serializing)]` and `#[serde(skip_serializing_if)]` are incompatible with `#[avro(default = false)]` --> tests/ui/avro_rs_226_skip_serializing.rs:24:5 | -24 | / #[serde(skip_serializing)] -25 | | #[avro(default = false)] -26 | | z: Option<i8>, - | |_________________^ +24 | #[serde(skip_serializing)] + | ^ diff --git a/avro_derive/tests/ui/avro_rs_226_skip_serializing_if.stderr b/avro_derive/tests/ui/avro_rs_226_skip_serializing_if.stderr index f3094d0..cda6697 100644 --- a/avro_derive/tests/ui/avro_rs_226_skip_serializing_if.stderr +++ b/avro_derive/tests/ui/avro_rs_226_skip_serializing_if.stderr @@ -1,7 +1,5 @@ error: `#[serde(skip_serializing)]` and `#[serde(skip_serializing_if)]` are incompatible with `#[avro(default = false)]` --> tests/ui/avro_rs_226_skip_serializing_if.rs:23:5 | -23 | / #[serde(skip_serializing_if = "Option::is_none")] -24 | | #[avro(default = false)] -25 | | y: Option<String>, - | |_____________________^ +23 | #[serde(skip_serializing_if = "Option::is_none")] + | ^ diff --git a/avro_derive/tests/ui/avro_rs_373_alias.stderr b/avro_derive/tests/ui/avro_rs_373_alias.stderr index 3c741f2..748bacd 100644 --- a/avro_derive/tests/ui/avro_rs_373_alias.stderr +++ b/avro_derive/tests/ui/avro_rs_373_alias.stderr @@ -1,15 +1,5 @@ -warning: `#[avro(alias = "..")]` is deprecated - --> tests/ui/avro_rs_373_alias.rs:22:5 - | -22 | / #[avro(alias = "c")] -23 | | a: String, - | |_____________^ - | - = help: Use `#[serde(alias = "..")]` instead - error: `#[avro(alias = "..")]` must match `#[serde(alias = "..")]`, it's also deprecated. Please use only `#[serde(alias = "..")]` --> tests/ui/avro_rs_373_alias.rs:22:5 | -22 | / #[avro(alias = "c")] -23 | | a: String, - | |_____________^ +22 | #[avro(alias = "c")] + | ^ diff --git a/avro_derive/tests/ui/avro_rs_373_field_rename.stderr b/avro_derive/tests/ui/avro_rs_373_field_rename.stderr index 2429447..6b17b54 100644 --- a/avro_derive/tests/ui/avro_rs_373_field_rename.stderr +++ b/avro_derive/tests/ui/avro_rs_373_field_rename.stderr @@ -1,15 +1,5 @@ -warning: `#[avro(rename = "..")]` is deprecated - --> tests/ui/avro_rs_373_field_rename.rs:22:5 - | -22 | / #[avro(rename = "c")] -23 | | a: String, - | |_____________^ - | - = help: Use `#[serde(rename = "..")]` instead - error: `#[avro(rename = "..")]` must match `#[serde(rename = "..")]`, it's also deprecated. Please use only `#[serde(rename = "..")]` --> tests/ui/avro_rs_373_field_rename.rs:22:5 | -22 | / #[avro(rename = "c")] -23 | | a: String, - | |_____________^ +22 | #[avro(rename = "c")] + | ^ diff --git a/avro_derive/tests/ui/avro_rs_373_flatten.stderr b/avro_derive/tests/ui/avro_rs_373_flatten.stderr index f9f14e1..95b83eb 100644 --- a/avro_derive/tests/ui/avro_rs_373_flatten.stderr +++ b/avro_derive/tests/ui/avro_rs_373_flatten.stderr @@ -1,15 +1,5 @@ -warning: `#[avro(flatten)]` is deprecated - --> tests/ui/avro_rs_373_flatten.rs:22:5 - | -22 | / #[avro(flatten)] -23 | | a: Bar, - | |__________^ - | - = help: Use `#[serde(flatten)]` instead - error: `#[avro(flatten)]` requires `#[serde(flatten)]`, it's also deprecated. Please use only `#[serde(flatten)]` --> tests/ui/avro_rs_373_flatten.rs:22:5 | -22 | / #[avro(flatten)] -23 | | a: Bar, - | |__________^ +22 | #[avro(flatten)] + | ^ diff --git a/avro_derive/tests/ui/avro_rs_373_name.stderr b/avro_derive/tests/ui/avro_rs_373_name.stderr index 26d6a0a..9580607 100644 --- a/avro_derive/tests/ui/avro_rs_373_name.stderr +++ b/avro_derive/tests/ui/avro_rs_373_name.stderr @@ -1,21 +1,5 @@ -warning: `#[avro(name = "...")]` is deprecated. - --> tests/ui/avro_rs_373_name.rs:21:1 - | -21 | / #[avro(name = "Something")] -22 | | struct Foo { -23 | | a: String, -24 | | b: i32, -25 | | } - | |_^ - | - = help: Use `#[serde(rename = "...")]` instead. - error: #[avro(name = "..")] must match #[serde(rename = "..")], it's also deprecated. Please use only `#[serde(rename = "..")]` --> tests/ui/avro_rs_373_name.rs:21:1 | -21 | / #[avro(name = "Something")] -22 | | struct Foo { -23 | | a: String, -24 | | b: i32, -25 | | } - | |_^ +21 | #[avro(name = "Something")] + | ^ diff --git a/avro_derive/tests/ui/avro_rs_373_remote.stderr b/avro_derive/tests/ui/avro_rs_373_remote.stderr index fe4fd10..6a5978e 100644 --- a/avro_derive/tests/ui/avro_rs_373_remote.stderr +++ b/avro_derive/tests/ui/avro_rs_373_remote.stderr @@ -1,9 +1,5 @@ error: AvroSchema derive does not support the Serde `remote` attribute --> tests/ui/avro_rs_373_remote.rs:27:1 | -27 | / #[serde(remote = "Foo")] -28 | | struct FooRemote { -29 | | a: String, -30 | | b: i32, -31 | | } - | |_^ +27 | #[serde(remote = "Foo")] + | ^ diff --git a/avro_derive/tests/ui/avro_rs_373_rename_all.stderr b/avro_derive/tests/ui/avro_rs_373_rename_all.stderr index 26a8233..d2eafb6 100644 --- a/avro_derive/tests/ui/avro_rs_373_rename_all.stderr +++ b/avro_derive/tests/ui/avro_rs_373_rename_all.stderr @@ -1,21 +1,5 @@ -warning: `#[avro(rename_all = "..")]` is deprecated - --> tests/ui/avro_rs_373_rename_all.rs:21:1 - | -21 | / #[avro(rename_all = "snake_case")] -22 | | struct Foo { -23 | | a: String, -24 | | b: i32, -25 | | } - | |_^ - | - = help: Use `#[serde(rename_all = "..")]` instead - error: #[avro(rename_all = "..")] must match #[serde(rename_all = "..")], it's also deprecated. Please use only `#[serde(rename_all = "..")]` --> tests/ui/avro_rs_373_rename_all.rs:21:1 | -21 | / #[avro(rename_all = "snake_case")] -22 | | struct Foo { -23 | | a: String, -24 | | b: i32, -25 | | } - | |_^ +21 | #[avro(rename_all = "snake_case")] + | ^ diff --git a/avro_derive/tests/ui/avro_rs_373_skip.stderr b/avro_derive/tests/ui/avro_rs_373_skip.stderr index 1f3cfb3..7f9cff0 100644 --- a/avro_derive/tests/ui/avro_rs_373_skip.stderr +++ b/avro_derive/tests/ui/avro_rs_373_skip.stderr @@ -1,15 +1,5 @@ -warning: `#[avro(skip)]` is deprecated - --> tests/ui/avro_rs_373_skip.rs:22:5 - | -22 | / #[avro(skip)] -23 | | a: String, - | |_____________^ - | - = help: Use `#[serde(skip)]` instead - error: `#[avro(skip)]` requires `#[serde(skip)]`, it's also deprecated. Please use only `#[serde(skip)]` --> tests/ui/avro_rs_373_skip.rs:22:5 | -22 | / #[avro(skip)] -23 | | a: String, - | |_____________^ +22 | #[avro(skip)] + | ^ diff --git a/avro_derive/tests/ui/avro_rs_373_tag_content_enum.stderr b/avro_derive/tests/ui/avro_rs_373_tag_content_enum.stderr index f3850b6..cee243f 100644 --- a/avro_derive/tests/ui/avro_rs_373_tag_content_enum.stderr +++ b/avro_derive/tests/ui/avro_rs_373_tag_content_enum.stderr @@ -1,9 +1,5 @@ error: AvroSchema derive does not support changing the tagging Serde generates (`tag`, `content`, `untagged`, `variant_identifier`, `field_identifier`) --> tests/ui/avro_rs_373_tag_content_enum.rs:21:1 | -21 | / #[serde(tag = "bar", content = "spam")] -22 | | enum Foo { -23 | | One, -24 | | Two, -25 | | } - | |_^ +21 | #[serde(tag = "bar", content = "spam")] + | ^ diff --git a/avro_derive/tests/ui/avro_rs_373_tag_enum.stderr b/avro_derive/tests/ui/avro_rs_373_tag_enum.stderr index 3c4bb50..b6f2489 100644 --- a/avro_derive/tests/ui/avro_rs_373_tag_enum.stderr +++ b/avro_derive/tests/ui/avro_rs_373_tag_enum.stderr @@ -1,9 +1,5 @@ error: AvroSchema derive does not support changing the tagging Serde generates (`tag`, `content`, `untagged`, `variant_identifier`, `field_identifier`) --> tests/ui/avro_rs_373_tag_enum.rs:21:1 | -21 | / #[serde(tag = "bar")] -22 | | enum Foo { -23 | | One, -24 | | Two, -25 | | } - | |_^ +21 | #[serde(tag = "bar")] + | ^ diff --git a/avro_derive/tests/ui/avro_rs_373_tag_struct.stderr b/avro_derive/tests/ui/avro_rs_373_tag_struct.stderr index 5c34abb..9d23026 100644 --- a/avro_derive/tests/ui/avro_rs_373_tag_struct.stderr +++ b/avro_derive/tests/ui/avro_rs_373_tag_struct.stderr @@ -1,9 +1,5 @@ error: AvroSchema derive does not support changing the tagging Serde generates (`tag`, `content`, `untagged`, `variant_identifier`, `field_identifier`) --> tests/ui/avro_rs_373_tag_struct.rs:21:1 | -21 | / #[serde(tag = "bar")] -22 | | struct Foo { -23 | | a: String, -24 | | b: i32, -25 | | } - | |_^ +21 | #[serde(tag = "bar")] + | ^ diff --git a/avro_derive/tests/ui/avro_rs_373_untagged_enum.stderr b/avro_derive/tests/ui/avro_rs_373_untagged_enum.stderr index b3f7e62..f0f1d8e 100644 --- a/avro_derive/tests/ui/avro_rs_373_untagged_enum.stderr +++ b/avro_derive/tests/ui/avro_rs_373_untagged_enum.stderr @@ -1,9 +1,5 @@ error: AvroSchema derive does not support changing the tagging Serde generates (`tag`, `content`, `untagged`, `variant_identifier`, `field_identifier`) --> tests/ui/avro_rs_373_untagged_enum.rs:21:1 | -21 | / #[serde(untagged)] -22 | | enum Foo { -23 | | One, -24 | | Two, -25 | | } - | |_^ +21 | #[serde(untagged)] + | ^ diff --git a/avro_derive/tests/ui/avro_rs_373_variant_rename.stderr b/avro_derive/tests/ui/avro_rs_373_variant_rename.stderr index 4774685..f24bf37 100644 --- a/avro_derive/tests/ui/avro_rs_373_variant_rename.stderr +++ b/avro_derive/tests/ui/avro_rs_373_variant_rename.stderr @@ -1,15 +1,5 @@ -warning: `#[avro(rename = "..")]` is deprecated - --> tests/ui/avro_rs_373_variant_rename.rs:23:5 - | -23 | / #[avro(rename = "Scam")] -24 | | Spam, - | |________^ - | - = help: Use `#[serde(rename = "..")]` instead - error: `#[avro(rename = "..")]` must match `#[serde(rename = "..")]`, it's also deprecated. Please use only `#[serde(rename = "..")]` --> tests/ui/avro_rs_373_variant_rename.rs:23:5 | -23 | / #[avro(rename = "Scam")] -24 | | Spam, - | |________^ +23 | #[avro(rename = "Scam")] + | ^ diff --git a/avro_derive/tests/ui/avro_rs_397_with_closure_parameters.stderr b/avro_derive/tests/ui/avro_rs_397_with_closure_parameters.stderr index f8b7570..c01d36b 100644 --- a/avro_derive/tests/ui/avro_rs_397_with_closure_parameters.stderr +++ b/avro_derive/tests/ui/avro_rs_397_with_closure_parameters.stderr @@ -1,9 +1,8 @@ error: Expected closure with 0 parameters --> tests/ui/avro_rs_397_with_closure_parameters.rs:22:5 | -22 | / #[avro(with = |_named_schemas, _enclosing_namespace| Schema::Bytes)] -23 | | a: String, - | |_____________^ +22 | #[avro(with = |_named_schemas, _enclosing_namespace| Schema::Bytes)] + | ^ warning: unused import: `Schema` --> tests/ui/avro_rs_397_with_closure_parameters.rs:18:31 @@ -11,4 +10,4 @@ warning: unused import: `Schema` 18 | use apache_avro::{AvroSchema, Schema}; | ^^^^^^ | - = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default + = note: `#[warn(unused_imports)]` on by default diff --git a/avro_derive/tests/ui/avro_rs_397_with_expr_string.stderr b/avro_derive/tests/ui/avro_rs_397_with_expr_string.stderr index 9107607..6176542 100644 --- a/avro_derive/tests/ui/avro_rs_397_with_expr_string.stderr +++ b/avro_derive/tests/ui/avro_rs_397_with_expr_string.stderr @@ -1,6 +1,5 @@ error: Invalid expression, expected function or closure --> tests/ui/avro_rs_397_with_expr_string.rs:22:5 | -22 | / #[avro(with = "Schema::Bytes")] -23 | | a: String, - | |_____________^ +22 | #[avro(with = "Schema::Bytes")] + | ^ diff --git a/avro_derive/tests/ui/avro_rs_397_with_word_without_serde.stderr b/avro_derive/tests/ui/avro_rs_397_with_word_without_serde.stderr index febd45e..472e2b0 100644 --- a/avro_derive/tests/ui/avro_rs_397_with_word_without_serde.stderr +++ b/avro_derive/tests/ui/avro_rs_397_with_word_without_serde.stderr @@ -1,6 +1,5 @@ error: `#[avro(with)]` requires `#[serde(with = "some_module")]` or provide a function to call `#[avro(with = some_fn)]` --> tests/ui/avro_rs_397_with_word_without_serde.rs:22:5 | -22 | / #[avro(with)] -23 | | a: String, - | |_____________^ +22 | #[avro(with)] + | ^ diff --git a/avro_derive/tests/ui/avro_rs_398_transparent.stderr b/avro_derive/tests/ui/avro_rs_398_transparent.stderr index 617dc43..f19810c 100644 --- a/avro_derive/tests/ui/avro_rs_398_transparent.stderr +++ b/avro_derive/tests/ui/avro_rs_398_transparent.stderr @@ -1,18 +1,11 @@ error: AvroSchema: #[serde(transparent)] is only allowed on structs with one unskipped field --> tests/ui/avro_rs_398_transparent.rs:21:1 | -21 | / #[serde(transparent)] -22 | | struct Foo { -23 | | a: String, -24 | | b: i32, -25 | | } - | |_^ +21 | #[serde(transparent)] + | ^ error: AvroSchema: `#[serde(transparent)]` is only supported on structs --> tests/ui/avro_rs_398_transparent.rs:28:1 | -28 | / #[serde(transparent)] -29 | | enum Bar { -30 | | A -31 | | } - | |_^ +28 | #[serde(transparent)] + | ^ diff --git a/avro_derive/tests/ui/avro_rs_398_transparent_skips.stderr b/avro_derive/tests/ui/avro_rs_398_transparent_skips.stderr index 21eb874..c1caeea 100644 --- a/avro_derive/tests/ui/avro_rs_398_transparent_skips.stderr +++ b/avro_derive/tests/ui/avro_rs_398_transparent_skips.stderr @@ -1,11 +1,5 @@ error: AvroSchema: #[serde(transparent)] is only allowed on structs with one unskipped field --> tests/ui/avro_rs_398_transparent_skips.rs:21:1 | -21 | / #[serde(transparent)] -22 | | struct Foo { -23 | | #[serde(skip)] -24 | | a: String, -... | -28 | | c: Vec<u8> -29 | | } - | |_^ +21 | #[serde(transparent)] + | ^
