From fcbf790cc47ba11824a61cc0920e525947b7dd6b Mon Sep 17 00:00:00 2001 From: Weihang Lo Date: Fri, 29 Nov 2024 09:42:52 -0500 Subject: [PATCH] test: remove the use of `CARGO_RUSTC_CURRENT_DIR` The environment variable has been removed in #14799. Switch to plain old `CARGO_MANIFEST_DIR` because snapbox's `current_rs` favors furthest Cargo.toml, blocking tests running in rust-lang/rust as a submodule. See also build failures in rust-lang/rust#133533 --- .cargo/config.toml | 5 ----- crates/cargo-test-support/src/lib.rs | 27 +++++++++++++++++++++++++-- src/cargo/util/lints.rs | 5 +++-- 3 files changed, 28 insertions(+), 9 deletions(-) diff --git a/.cargo/config.toml b/.cargo/config.toml index f1a26708418..960c1d4be41 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -3,8 +3,3 @@ build-man = "run --package xtask-build-man --" stale-label = "run --package xtask-stale-label --" bump-check = "run --package xtask-bump-check --" lint-docs = "run --package xtask-lint-docs --" - -[env] -# HACK: Until this is stabilized, `snapbox`s polyfill could get confused -# inside of the rust-lang/rust repo because it looks for the furthest-away `Cargo.toml` -CARGO_RUSTC_CURRENT_DIR = { value = "", relative = true } diff --git a/crates/cargo-test-support/src/lib.rs b/crates/cargo-test-support/src/lib.rs index a36e61c3b80..12ff729b164 100644 --- a/crates/cargo-test-support/src/lib.rs +++ b/crates/cargo-test-support/src/lib.rs @@ -80,9 +80,32 @@ macro_rules! t { } pub use cargo_util::ProcessBuilder; -pub use snapbox::file; pub use snapbox::str; -pub use snapbox::utils::current_dir; + +/// Find the directory for your source file +#[macro_export] +macro_rules! current_dir { + () => {{ + let root = ::std::path::Path::new(::std::env!("CARGO_MANIFEST_DIR")); + let file = ::std::file!(); + let rel_path = ::std::path::Path::new(file).parent().unwrap(); + root.join(rel_path) + }}; +} + +/// Declare an expected value for an assert from a file +/// +/// This is relative to the source file the macro is run from +/// +/// Output type: [`snapbox::Data`] +#[macro_export] +macro_rules! file { + [$path:literal] => {{ + let mut path = $crate::current_dir!(); + path.push($path); + ::snapbox::Data::read_from(&path, None) + }}; +} /// `panic!`, reporting the specified error , see also [`t!`] #[track_caller] diff --git a/src/cargo/util/lints.rs b/src/cargo/util/lints.rs index 99531bfbd7b..0793c8928ba 100644 --- a/src/cargo/util/lints.rs +++ b/src/cargo/util/lints.rs @@ -610,6 +610,7 @@ mod tests { use itertools::Itertools; use snapbox::ToDebug; use std::collections::HashSet; + use std::path::Path; #[test] fn ensure_sorted_lints() { @@ -647,7 +648,7 @@ mod tests { #[test] fn ensure_updated_lints() { - let path = snapbox::utils::current_rs!(); + let path = Path::new(std::env!("CARGO_MANIFEST_DIR")).join(file!()); let expected = std::fs::read_to_string(&path).unwrap(); let expected = expected .lines() @@ -686,7 +687,7 @@ mod tests { #[test] fn ensure_updated_lint_groups() { - let path = snapbox::utils::current_rs!(); + let path = Path::new(std::env!("CARGO_MANIFEST_DIR")).join(file!()); let expected = std::fs::read_to_string(&path).unwrap(); let expected = expected .lines()