From 2a54190c9c789756d2281eefc856704e98c9941e Mon Sep 17 00:00:00 2001 From: Weihang Lo Date: Sun, 15 Dec 2024 19:01:30 -0500 Subject: [PATCH] test(build-std): isolate tests for asserting complete error messages For test `basic, an isolated CARGO_HOME environment is used elesewhere in this test to ensure no extra index updates is performed. It is achieve by asserting the complete stderr without any wildcard. Hence we need to provide a `build_std_isolated` method for it. --- tests/build-std/main.rs | 33 +++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/tests/build-std/main.rs b/tests/build-std/main.rs index f7eb4ec6e3b2..0c5d1330cca4 100644 --- a/tests/build-std/main.rs +++ b/tests/build-std/main.rs @@ -25,9 +25,11 @@ use cargo_test_support::{basic_manifest, paths, project, rustc_host, str, Execs} use std::env; use std::path::Path; -fn enable_build_std(e: &mut Execs, arg: Option<&str>) { - e.env_remove("CARGO_HOME"); - e.env_remove("HOME"); +fn enable_build_std(e: &mut Execs, arg: Option<&str>, isolated: bool) { + if !isolated { + e.env_remove("CARGO_HOME"); + e.env_remove("HOME"); + } // And finally actually enable `build-std` for now let arg = match arg { @@ -42,17 +44,23 @@ fn enable_build_std(e: &mut Execs, arg: Option<&str>) { trait BuildStd: Sized { fn build_std(&mut self) -> &mut Self; fn build_std_arg(&mut self, arg: &str) -> &mut Self; + fn build_std_isolated(&mut self) -> &mut Self; fn target_host(&mut self) -> &mut Self; } impl BuildStd for Execs { fn build_std(&mut self) -> &mut Self { - enable_build_std(self, None); + enable_build_std(self, None, false); self } fn build_std_arg(&mut self, arg: &str) -> &mut Self { - enable_build_std(self, Some(arg)); + enable_build_std(self, Some(arg), false); + self + } + + fn build_std_isolated(&mut self) -> &mut Self { + enable_build_std(self, None, true); self } @@ -107,9 +115,12 @@ fn basic() { ) .build(); - p.cargo("check").build_std().target_host().run(); + // An isolated CARGO_HOME environment is used elesewhere in this test + // to ensure no extra index updates is performed. + // It is achieve by asserting the complete stderr without any wildcard. + p.cargo("check").build_std_isolated().target_host().run(); p.cargo("build") - .build_std() + .build_std_isolated() .target_host() // Importantly, this should not say [UPDATING] // There have been multiple bugs where every build triggers and update. @@ -120,7 +131,7 @@ fn basic() { "#]]) .run(); p.cargo("run") - .build_std() + .build_std_isolated() .target_host() .with_stderr_data(str![[r#" [FINISHED] `dev` profile [unoptimized + debuginfo] target(s) in [ELAPSED]s @@ -129,7 +140,7 @@ fn basic() { "#]]) .run(); p.cargo("test") - .build_std() + .build_std_isolated() .target_host() .with_stderr_data(str![[r#" [COMPILING] rustc-std-workspace-std [..] @@ -379,13 +390,11 @@ fn test_proc_macro() { .file("src/lib.rs", "") .build(); - // Download dependencies first, - // so we can compare `cargo test` output without any wildcard - p.cargo("fetch").build_std().run(); p.cargo("test --lib") .env_remove(cargo_util::paths::dylib_path_envvar()) .build_std() .with_stderr_data(str![[r#" +... [COMPILING] foo v0.0.0 ([ROOT]/foo) [FINISHED] `test` profile [unoptimized + debuginfo] target(s) in [ELAPSED]s [RUNNING] unittests src/lib.rs (target/debug/deps/foo-[HASH])