From 94557ab5d6ee99ce50060ecdf14126633495007f Mon Sep 17 00:00:00 2001 From: figsoda Date: Fri, 6 Jan 2023 23:15:19 -0500 Subject: [PATCH] fix: Only exit peacefully when all failures are overwritten --- src/runner.rs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/runner.rs b/src/runner.rs index d2ec3541..397babcd 100644 --- a/src/runner.rs +++ b/src/runner.rs @@ -77,7 +77,7 @@ impl Runner { }) .collect(); - if !failures.is_empty() && mode != &Mode::Overwrite { + if !failures.is_empty() { let stderr = std::io::stderr(); let mut stderr = stderr.lock(); let _ = writeln!( @@ -236,15 +236,19 @@ impl Case { } Mode::Overwrite => { // `rev()` to ensure we don't mess up our line number info - for output in outputs.iter().rev() { - if let Err(output) = output { - let _ = sequence.overwrite( + for step_status in outputs.iter_mut().rev() { + if let Err(output) = step_status { + let res = sequence.overwrite( &self.path, output.id.as_deref(), output.stdout.as_ref().map(|s| &s.content), output.stderr.as_ref().map(|s| &s.content), output.spawn.exit, ); + + if res.is_ok() { + *step_status = Ok(output.clone()); + } } } }