From 4210d20a0339fd763fff23207eab083503f1ba98 Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Wed, 7 May 2025 10:49:15 +0200 Subject: [PATCH 1/2] prefer CARGO_TARGET_TMPDIR as location for temporary build files --- src/config.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/config.rs b/src/config.rs index 73e78f33..9be04689 100644 --- a/src/config.rs +++ b/src/config.rs @@ -177,8 +177,9 @@ impl Config { program: CommandBuilder::rustc(), output_conflict_handling: error_on_output_conflict, bless_command: None, - out_dir: std::env::var_os("CARGO_TARGET_DIR") + out_dir: option_env!("CARGO_TARGET_TMPDIR") .map(PathBuf::from) + .or_else(|| std::env::var_os("CARGO_TARGET_DIR").map(PathBuf::from)) .unwrap_or_else(|| std::env::current_dir().unwrap().join("target")) .join("ui"), skip_files: Vec::new(), From 3b1b44417a678cc6fb5d2a10c0ec485b77e9f828 Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Wed, 7 May 2025 15:03:23 +0200 Subject: [PATCH 2/2] WIP: get the env var from the tests --- src/config.rs | 12 ++++-------- tests/integrations/basic-bin/Cargo.lock | 4 ++-- tests/integrations/basic-bin/tests/ui_tests.rs | 2 +- tests/integrations/basic-fail-mode/Cargo.lock | 4 ++-- tests/integrations/basic-fail-mode/tests/run_file.rs | 6 +++--- tests/integrations/basic-fail-mode/tests/ui_tests.rs | 2 +- tests/integrations/basic-fail/Cargo.lock | 4 ++-- tests/integrations/basic-fail/tests/ui_tests.rs | 2 +- .../integrations/basic-fail/tests/ui_tests_bless.rs | 2 +- .../basic-fail/tests/ui_tests_diff_only.rs | 2 +- .../basic-fail/tests/ui_tests_invalid_program.rs | 2 +- .../basic-fail/tests/ui_tests_invalid_program2.rs | 2 +- tests/integrations/basic/Cargo.lock | 4 ++-- tests/integrations/basic/tests/run_file.rs | 6 +++--- tests/integrations/basic/tests/ui_tests.rs | 2 +- tests/integrations/cargo-run/Cargo.lock | 4 ++-- tests/integrations/cargo-run/tests/ui_tests.rs | 2 +- 17 files changed, 29 insertions(+), 33 deletions(-) diff --git a/src/config.rs b/src/config.rs index 9be04689..dabb4d50 100644 --- a/src/config.rs +++ b/src/config.rs @@ -117,7 +117,7 @@ impl Config { /// Create a configuration for testing the output of running /// `rustc` on the test files. #[cfg(feature = "rustc")] - pub fn rustc(root_dir: impl Into) -> Self { + pub fn rustc(root_dir: impl Into, cargo_target_tmpdir: impl Into) -> Self { let mut comment_defaults = Comments::default(); #[derive(Debug)] @@ -177,11 +177,7 @@ impl Config { program: CommandBuilder::rustc(), output_conflict_handling: error_on_output_conflict, bless_command: None, - out_dir: option_env!("CARGO_TARGET_TMPDIR") - .map(PathBuf::from) - .or_else(|| std::env::var_os("CARGO_TARGET_DIR").map(PathBuf::from)) - .unwrap_or_else(|| std::env::current_dir().unwrap().join("target")) - .join("ui"), + out_dir: cargo_target_tmpdir.into().join("ui"), skip_files: Vec::new(), filter_files: Vec::new(), threads: None, @@ -261,13 +257,13 @@ impl Config { /// Create a configuration for testing the output of running /// `cargo` on the test `Cargo.toml` files. #[cfg(feature = "rustc")] - pub fn cargo(root_dir: impl Into) -> Self { + pub fn cargo(root_dir: impl Into, cargo_target_tmpdir: impl Into) -> Self { let mut this = Self { program: CommandBuilder::cargo(), custom_comments: Default::default(), diagnostic_extractor: diagnostics::rustc::cargo_diagnostics_extractor, comment_start: "#", - ..Self::rustc(root_dir) + ..Self::rustc(root_dir, cargo_target_tmpdir) }; this.comment_defaults.base().custom.clear(); this diff --git a/tests/integrations/basic-bin/Cargo.lock b/tests/integrations/basic-bin/Cargo.lock index 257c6788..d9b6e29a 100644 --- a/tests/integrations/basic-bin/Cargo.lock +++ b/tests/integrations/basic-bin/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "addr2line" @@ -716,7 +716,7 @@ dependencies = [ [[package]] name = "ui_test" -version = "0.29.1" +version = "0.29.2" dependencies = [ "annotate-snippets", "anyhow", diff --git a/tests/integrations/basic-bin/tests/ui_tests.rs b/tests/integrations/basic-bin/tests/ui_tests.rs index 852d0d25..e1ecb0ac 100644 --- a/tests/integrations/basic-bin/tests/ui_tests.rs +++ b/tests/integrations/basic-bin/tests/ui_tests.rs @@ -9,7 +9,7 @@ fn main() -> ui_test::color_eyre::Result<()> { ui_test::error_on_output_conflict }, bless_command: Some("cargo test".to_string()), - ..Config::rustc("tests/actual_tests") + ..Config::rustc("tests/actual_tests", env!("CARGO_TARGET_TMPDIR")) }; config .comment_defaults diff --git a/tests/integrations/basic-fail-mode/Cargo.lock b/tests/integrations/basic-fail-mode/Cargo.lock index 08d20867..3f746e9b 100644 --- a/tests/integrations/basic-fail-mode/Cargo.lock +++ b/tests/integrations/basic-fail-mode/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "addr2line" @@ -716,7 +716,7 @@ dependencies = [ [[package]] name = "ui_test" -version = "0.29.1" +version = "0.29.2" dependencies = [ "annotate-snippets", "anyhow", diff --git a/tests/integrations/basic-fail-mode/tests/run_file.rs b/tests/integrations/basic-fail-mode/tests/run_file.rs index 5864b7c4..d7a5bd9c 100644 --- a/tests/integrations/basic-fail-mode/tests/run_file.rs +++ b/tests/integrations/basic-fail-mode/tests/run_file.rs @@ -5,7 +5,7 @@ use ui_test::*; #[test] fn run_file() -> Result<()> { - let mut config = Config::rustc(PathBuf::new()); + let mut config = Config::rustc(PathBuf::new(), env!("CARGO_TARGET_TMPDIR")); let tmp_dir = tempfile::tempdir_in(env!("CARGO_TARGET_TMPDIR"))?; let tmp_dir = tmp_dir.path(); @@ -25,7 +25,7 @@ fn run_file() -> Result<()> { #[test] fn fail_run_file() { - let mut config = Config::rustc(PathBuf::new()); + let mut config = Config::rustc(PathBuf::new(), env!("CARGO_TARGET_TMPDIR")); config.host = Some(String::new()); config.program = CommandBuilder::cmd("invalid_alsdkfjalsdfjalskdfj"); @@ -45,7 +45,7 @@ fn fail_run_file() { fn run_file_no_deps() -> Result<()> { let path = "../../../target"; - let mut config = Config::rustc(PathBuf::new()); + let mut config = Config::rustc(PathBuf::new(), env!("CARGO_TARGET_TMPDIR")); let tmp_dir = tempfile::tempdir_in(path)?; let tmp_dir = tmp_dir.path(); diff --git a/tests/integrations/basic-fail-mode/tests/ui_tests.rs b/tests/integrations/basic-fail-mode/tests/ui_tests.rs index 92b14795..0dd846ff 100644 --- a/tests/integrations/basic-fail-mode/tests/ui_tests.rs +++ b/tests/integrations/basic-fail-mode/tests/ui_tests.rs @@ -9,7 +9,7 @@ fn main() -> ui_test::color_eyre::Result<()> { ui_test::error_on_output_conflict }, bless_command: Some("cargo test".to_string()), - ..Config::rustc("tests/actual_tests") + ..Config::rustc("tests/actual_tests", env!("CARGO_TARGET_TMPDIR")) }; config .comment_defaults diff --git a/tests/integrations/basic-fail/Cargo.lock b/tests/integrations/basic-fail/Cargo.lock index 15e721d8..6d3398c9 100644 --- a/tests/integrations/basic-fail/Cargo.lock +++ b/tests/integrations/basic-fail/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "addr2line" @@ -716,7 +716,7 @@ dependencies = [ [[package]] name = "ui_test" -version = "0.29.1" +version = "0.29.2" dependencies = [ "annotate-snippets", "anyhow", diff --git a/tests/integrations/basic-fail/tests/ui_tests.rs b/tests/integrations/basic-fail/tests/ui_tests.rs index 2432f749..8c29cce1 100644 --- a/tests/integrations/basic-fail/tests/ui_tests.rs +++ b/tests/integrations/basic-fail/tests/ui_tests.rs @@ -6,7 +6,7 @@ fn main() -> ui_test::color_eyre::Result<()> { // Never bless integrations-fail tests, we want to see stderr mismatches output_conflict_handling: ui_test::error_on_output_conflict, bless_command: Some("DO NOT BLESS. These are meant to fail".to_string()), - ..Config::rustc("tests/actual_tests") + ..Config::rustc("tests/actual_tests", env!("CARGO_TARGET_TMPDIR")) }; config diff --git a/tests/integrations/basic-fail/tests/ui_tests_bless.rs b/tests/integrations/basic-fail/tests/ui_tests_bless.rs index 2fb5e96f..125fad14 100644 --- a/tests/integrations/basic-fail/tests/ui_tests_bless.rs +++ b/tests/integrations/basic-fail/tests/ui_tests_bless.rs @@ -19,7 +19,7 @@ fn main() -> ui_test::color_eyre::Result<()> { ui_test::error_on_output_conflict }, bless_command: Some("cargo test".to_string()), - ..Config::rustc(root_dir) + ..Config::rustc(root_dir, env!("CARGO_TARGET_TMPDIR")) }; config.comment_defaults.base().exit_status = match rustfix { RustfixMode::Everything => None.into(), diff --git a/tests/integrations/basic-fail/tests/ui_tests_diff_only.rs b/tests/integrations/basic-fail/tests/ui_tests_diff_only.rs index 022eb3f2..6205be2f 100644 --- a/tests/integrations/basic-fail/tests/ui_tests_diff_only.rs +++ b/tests/integrations/basic-fail/tests/ui_tests_diff_only.rs @@ -5,7 +5,7 @@ fn main() -> ui_test::color_eyre::Result<()> { // Never bless integrations-fail tests, we want to see stderr mismatches output_conflict_handling: ui_test::error_on_output_conflict, bless_command: Some("DO NOT BLESS. These are meant to fail".to_string()), - ..Config::rustc("tests/actual_tests") + ..Config::rustc("tests/actual_tests", env!("CARGO_TARGET_TMPDIR")) }; run_tests_generic( diff --git a/tests/integrations/basic-fail/tests/ui_tests_invalid_program.rs b/tests/integrations/basic-fail/tests/ui_tests_invalid_program.rs index d0aac471..94f2a329 100644 --- a/tests/integrations/basic-fail/tests/ui_tests_invalid_program.rs +++ b/tests/integrations/basic-fail/tests/ui_tests_invalid_program.rs @@ -6,7 +6,7 @@ fn main() -> ui_test::color_eyre::Result<()> { // Never bless integrations-fail tests, we want to see stderr mismatches output_conflict_handling: ui_test::error_on_output_conflict, bless_command: Some("DO NOT BLESS. These are meant to fail".to_string()), - ..Config::rustc("tests/actual_tests") + ..Config::rustc("tests/actual_tests", env!("CARGO_TARGET_TMPDIR")) }; run_tests_generic( diff --git a/tests/integrations/basic-fail/tests/ui_tests_invalid_program2.rs b/tests/integrations/basic-fail/tests/ui_tests_invalid_program2.rs index e3d072e0..f794ed49 100644 --- a/tests/integrations/basic-fail/tests/ui_tests_invalid_program2.rs +++ b/tests/integrations/basic-fail/tests/ui_tests_invalid_program2.rs @@ -7,7 +7,7 @@ fn main() -> ui_test::color_eyre::Result<()> { output_conflict_handling: ui_test::error_on_output_conflict, bless_command: Some("DO NOT BLESS. These are meant to fail".to_string()), host: Some("foo".into()), - ..Config::rustc("tests/actual_tests") + ..Config::rustc("tests/actual_tests", env!("CARGO_TARGET_TMPDIR")) }; run_tests_generic( diff --git a/tests/integrations/basic/Cargo.lock b/tests/integrations/basic/Cargo.lock index a2712be7..0b04aada 100644 --- a/tests/integrations/basic/Cargo.lock +++ b/tests/integrations/basic/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "addr2line" @@ -639,7 +639,7 @@ dependencies = [ [[package]] name = "ui_test" -version = "0.29.1" +version = "0.29.2" dependencies = [ "annotate-snippets", "anyhow", diff --git a/tests/integrations/basic/tests/run_file.rs b/tests/integrations/basic/tests/run_file.rs index 98bb257b..918800a3 100644 --- a/tests/integrations/basic/tests/run_file.rs +++ b/tests/integrations/basic/tests/run_file.rs @@ -5,7 +5,7 @@ use ui_test::*; #[test] fn run_file() -> Result<()> { - let mut config = Config::rustc(PathBuf::new()); + let mut config = Config::rustc(PathBuf::new(), env!("CARGO_TARGET_TMPDIR")); let tmp_dir = tempfile::tempdir_in(env!("CARGO_TARGET_TMPDIR"))?; let tmp_dir = tmp_dir.path(); @@ -27,7 +27,7 @@ fn run_file() -> Result<()> { fn run_file_with_deps() -> Result<()> { let path = "../../../target"; - let mut config = Config::rustc(PathBuf::new()); + let mut config = Config::rustc(PathBuf::new(), env!("CARGO_TARGET_TMPDIR")); let tmp_dir = tempfile::tempdir_in(path)?; let tmp_dir = tmp_dir.path(); @@ -61,7 +61,7 @@ fn non_utf8() -> Result<()> { if cfg!(windows) { return Ok(()); } - let mut config = Config::rustc(PathBuf::new()); + let mut config = Config::rustc(PathBuf::new(), env!("CARGO_TARGET_TMPDIR")); config.program = CommandBuilder::cmd("cat"); config.comment_defaults.base().custom.clear(); config.host = Some(String::new()); diff --git a/tests/integrations/basic/tests/ui_tests.rs b/tests/integrations/basic/tests/ui_tests.rs index 9d51f43e..1b77414a 100644 --- a/tests/integrations/basic/tests/ui_tests.rs +++ b/tests/integrations/basic/tests/ui_tests.rs @@ -9,7 +9,7 @@ fn main() -> ui_test::color_eyre::Result<()> { ui_test::error_on_output_conflict }, bless_command: Some("cargo test".to_string()), - ..Config::rustc("tests/actual_tests") + ..Config::rustc("tests/actual_tests", env!("CARGO_TARGET_TMPDIR")) }; config.stderr_filter("in ([0-9]m )?[0-9\\.]+s", ""); config.stdout_filter("in ([0-9]m )?[0-9\\.]+s", ""); diff --git a/tests/integrations/cargo-run/Cargo.lock b/tests/integrations/cargo-run/Cargo.lock index 257c6788..d9b6e29a 100644 --- a/tests/integrations/cargo-run/Cargo.lock +++ b/tests/integrations/cargo-run/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "addr2line" @@ -716,7 +716,7 @@ dependencies = [ [[package]] name = "ui_test" -version = "0.29.1" +version = "0.29.2" dependencies = [ "annotate-snippets", "anyhow", diff --git a/tests/integrations/cargo-run/tests/ui_tests.rs b/tests/integrations/cargo-run/tests/ui_tests.rs index 4efd0ec2..e4e311a0 100644 --- a/tests/integrations/cargo-run/tests/ui_tests.rs +++ b/tests/integrations/cargo-run/tests/ui_tests.rs @@ -8,7 +8,7 @@ fn main() -> ui_test::color_eyre::Result<()> { ui_test::error_on_output_conflict }, bless_command: Some("cargo test".to_string()), - ..Config::cargo("tests/actual_tests") + ..Config::cargo("tests/actual_tests", env!("CARGO_TARGET_TMPDIR")) }; config.comment_defaults.base().exit_status = Spanned::dummy(101).into(); config.comment_defaults.base().require_annotations = Spanned::dummy(false).into();