From 84c0c9d20dbe1d171e6aaf61b8e512d6dc78412f Mon Sep 17 00:00:00 2001 From: Chris Denton Date: Tue, 25 Jan 2022 10:36:10 +0000 Subject: [PATCH] Avoid double panics when using `TempDir` in tests --- library/std/src/sys_common/io.rs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/library/std/src/sys_common/io.rs b/library/std/src/sys_common/io.rs index ea9108f1713..d1e9fed41fc 100644 --- a/library/std/src/sys_common/io.rs +++ b/library/std/src/sys_common/io.rs @@ -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(); + } } }