about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2020-12-19 12:28:00 +0000
committerbors <bors@rust-lang.org>2020-12-19 12:28:00 +0000
commit73feb31bc3d6b71e97d8ba63f3c52f975c2c93e8 (patch)
tree6035879ac45e514c16d19c29891573e402e97f6d
parent0718eeb64849b00e8f0a5cc4f96603b61ff8c049 (diff)
parentdfb4ea588c2af7633b2d01d2dfa3d6ffc7d07ee7 (diff)
downloadrust-73feb31bc3d6b71e97d8ba63f3c52f975c2c93e8.tar.gz
rust-73feb31bc3d6b71e97d8ba63f3c52f975c2c93e8.zip
Auto merge of #6471 - phansch:fix-bless, r=flip1995
Fix blessing of new reference files

Adding of new reference files wasn't handled correctly. It was trying to
read a file that didn't exist yet.

Instead of unwrapping, we now treat a missing reference file as empty
(`Vec::new`). This makes the following conditional work. We then also
have to re-read the reference file after it was being copied. This
second read is technically the same as in the old shell script, but
wasn't really obvious there. The shell script did a `-s` test which
reads the file as well.

changelog: internal: Fix `cargo dev bless` when new reference files are added
-rw-r--r--clippy_dev/src/bless.rs5
1 files changed, 4 insertions, 1 deletions
diff --git a/clippy_dev/src/bless.rs b/clippy_dev/src/bless.rs
index 8d5c2e95055..645098e4cfc 100644
--- a/clippy_dev/src/bless.rs
+++ b/clippy_dev/src/bless.rs
@@ -46,13 +46,16 @@ fn update_reference_file(reference_file_path: PathBuf) {
     }
 
     let test_output_file = fs::read(&test_output_path).expect("Unable to read test output file");
-    let reference_file = fs::read(&reference_file_path).expect("Unable to read reference file");
+    let reference_file = fs::read(&reference_file_path).unwrap_or_default();
 
     if test_output_file != reference_file {
         // If a test run caused an output file to change, update the reference file
         println!("updating {}", &relative_reference_file_path.display());
         fs::copy(test_output_path, &reference_file_path).expect("Could not update reference file");
 
+        // We need to re-read the file now because it was potentially updated from copying
+        let reference_file = fs::read(&reference_file_path).unwrap_or_default();
+
         if reference_file.is_empty() {
             // If we copied over an empty output file, we remove the now empty reference file
             println!("removing {}", &relative_reference_file_path.display());