Change:
While working on , I noticed that running an test with appears to succeed, but doesn't actually update the snapshot file(s). This seems to be a side-effect of . The test does successfully bless the temporary copy of the snapshot file in , but that has no effect on the original snapshot file in .
cc label +A-run-make T-bootstrap

Discussion:
} if self.config.bless { <del> cmd.env("RUSTC_BLESS_TEST", "--bless"); // Assume this option is active if the environment variable is "defined", with _any_ value. // As an example, a `Makefile` can use this option by: </del> <ins> // If we're running in `--bless` mode, set an environment variable to tell // `run_make_support` to bless snapshot files instead of checking them. </ins> // <del> //   ifdef RUSTC_BLESS_TEST //       cp "$(TMPDIR)"/actual_something.ext expected_something.ext //   else //       $(DIFF) expected_something.ext "$(TMPDIR)"/actual_something.ext //   endif </del> <ins> // The value is this test's source directory, because the support code // will need that path in order to bless the _original_ snapshot files, // not the copies in `rmake_out`. // (See <https://github.com/rust-lang/rust/issues/129038>.) cmd.env("RUSTC_BLESS_TEST", &self.testpaths.file); </ins> } if self.config.target.contains("msvc") && !self.config.cc.is_empty() {

let (expected_name, actual_name, output, actual) = self.run_common(); if !output.is_empty() { <del> // If we can bless (meaning we have a file to write into and the `RUSTC_BLESS_TEST` // environment variable set), then we write into the file and return. if let Some(ref expected_file) = self.expected_file { if std::env::var("RUSTC_BLESS_TEST").is_ok() { println!("Blessing `{}`", expected_file.display()); fs::write(expected_file, actual); return; } </del> <ins> if self.maybe_bless_expected_file(&actual) { return; </ins> } panic!( "test failed: `{}` is different from `{}`nn{}",

let (expected_name, actual_name, output, actual) = self.run_common(); if output.is_empty() { <del> // If we can bless (meaning we have a file to write into and the `RUSTC_BLESS_TEST` // environment variable set), then we write into the file and return. if let Some(ref expected_file) = self.expected_file { if std::env::var("RUSTC_BLESS_TEST").is_ok() { println!("Blessing `{}`", expected_file.display()); fs::write(expected_file, actual); return; } </del> <ins> if self.maybe_bless_expected_file(&actual) { return; </ins> } panic!( "test failed: `{}` is not different from `{}`nn{}",

) } } <ins> /// If we have an expected file to write into, and `RUSTC_BLESS_TEST` is /// set, then write the actual output into the file and return `true`. /// /// We assume that `RUSTC_BLESS_TEST` contains the path to the original test's /// source directory. That lets us bless the original snapshot file in the /// source tree, not the copy in `rmake_out` that we would normally use. fn maybe_bless_expected_file(&self, actual: &str) -> bool { let Some(ref expected_file) = self.expected_file else { return false; }; let Ok(bless_dir) = std::env::var("RUSTC_BLESS_TEST") else { return false; }; let bless_file = Path::new(&bless_dir).join(expected_file); println!("Blessing `{}`", bless_file.display()); fs::write(bless_file, actual); true } </ins> }