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)]
+   | ^

Reply via email to