diff options
| author | Jakub Beránek <berykubik@gmail.com> | 2025-08-06 15:55:48 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-08-06 15:55:48 +0200 |
| commit | a88e29b0d72a5def86b7eb293b907348bb6ea29a (patch) | |
| tree | 47df1cf0929903c1f638d38be43de40bb6d507d1 | |
| parent | 07e86341a56f15e2bff9070b411b0ed04a718b07 (diff) | |
| parent | f96fbb214b64a6d373b239deeb8a65b8059ffda7 (diff) | |
| download | rust-a88e29b0d72a5def86b7eb293b907348bb6ea29a.tar.gz rust-a88e29b0d72a5def86b7eb293b907348bb6ea29a.zip | |
Rollup merge of #144954 - Zalathar:run-make-bless, r=jieyouxu
run-make: Allow blessing snapshot files that don't exist yet This makes it possible to bless the snapshot files used by `diff()` in newly-created run-make tests, without having to create the files manually beforehand. r? jieyouxu
| -rw-r--r-- | src/tools/run-make-support/src/diff/mod.rs | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/tools/run-make-support/src/diff/mod.rs b/src/tools/run-make-support/src/diff/mod.rs index ee48e373366..739eff72f05 100644 --- a/src/tools/run-make-support/src/diff/mod.rs +++ b/src/tools/run-make-support/src/diff/mod.rs @@ -23,6 +23,7 @@ pub struct Diff { actual: Option<String>, actual_name: Option<String>, normalizers: Vec<(String, String)>, + bless_dir: Option<String>, drop_bomb: DropBomb, } @@ -37,6 +38,7 @@ impl Diff { actual: None, actual_name: None, normalizers: Vec::new(), + bless_dir: std::env::var("RUSTC_BLESS_TEST").ok(), drop_bomb: DropBomb::arm("diff"), } } @@ -44,6 +46,13 @@ impl Diff { /// Specify the expected output for the diff from a file. pub fn expected_file<P: AsRef<Path>>(&mut self, path: P) -> &mut Self { let path = path.as_ref(); + // In `--bless` mode, create the snapshot file if it doesn't already exist. + // The empty file will be overwritten with the actual text. + if self.bless_dir.is_some() + && let Ok(false) = std::fs::exists(path) + { + fs::write(path, ""); + } let content = fs::read_to_string(path); let name = path.to_string_lossy().to_string(); @@ -148,7 +157,7 @@ impl Diff { let Some(ref expected_file) = self.expected_file else { return false; }; - let Ok(bless_dir) = std::env::var("RUSTC_BLESS_TEST") else { + let Some(ref bless_dir) = self.bless_dir else { return false; }; |
