From 720ffa3e0b178e73dd67c0da08a66ab0b15a4b5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A9ctor=20Ram=C3=B3n=20Jim=C3=A9nez?= Date: Thu, 28 Aug 2025 12:37:58 +0200 Subject: [PATCH] Fix `Zen` mode finishing early with `Task::none()` --- test/src/emulator.rs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/test/src/emulator.rs b/test/src/emulator.rs index 63845b91..3d0b1263 100644 --- a/test/src/emulator.rs +++ b/test/src/emulator.rs @@ -111,7 +111,7 @@ impl Emulator

{ let task = program.update(&mut self.state, message); match self.mode { - Mode::Zen => self.wait_for(task), + Mode::Zen if self.pending_tasks > 0 => self.wait_for(task), _ => { if let Some(stream) = task::into_stream(task) { self.runtime.run( @@ -127,10 +127,12 @@ impl Emulator

{ pub fn perform(&mut self, program: &P, action: Action

) { match action { Action::CountDown => { - self.pending_tasks -= 1; + if self.pending_tasks > 0 { + self.pending_tasks -= 1; - if self.pending_tasks == 0 { - self.runtime.send(Event::Ready); + if self.pending_tasks == 0 { + self.runtime.send(Event::Ready); + } } } Action::Runtime(action) => match action { @@ -349,7 +351,7 @@ impl Emulator

{ self.runtime.send(Event::Ready); } } - } else { + } else if self.pending_tasks == 0 { self.runtime.send(Event::Ready); } }