Rollup merge of #93295 - ChrisDenton:tempdir-double-panic, r=dtolnay
Avoid double panics when using `TempDir` in tests `TempDir` could panic on drop if `remove_dir_all` returns an error. If this happens while already panicking, the test process would abort and therefore not show the test results. This PR tries to avoid such double panics.
This commit is contained in:
commit
4f2e2ceeb7
@ -8,6 +8,7 @@ pub mod test {
|
||||
use crate::env;
|
||||
use crate::fs;
|
||||
use crate::path::{Path, PathBuf};
|
||||
use crate::thread;
|
||||
use rand::RngCore;
|
||||
|
||||
pub struct TempDir(PathBuf);
|
||||
@ -29,7 +30,12 @@ pub mod test {
|
||||
// Gee, seeing how we're testing the fs module I sure hope that we
|
||||
// at least implement this correctly!
|
||||
let TempDir(ref p) = *self;
|
||||
fs::remove_dir_all(p).unwrap();
|
||||
let result = fs::remove_dir_all(p);
|
||||
// Avoid panicking while panicking as this causes the process to
|
||||
// immediately abort, without displaying test results.
|
||||
if !thread::panicking() {
|
||||
result.unwrap();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user