diff --git a/test/src/emulator.rs b/test/src/emulator.rs index 1c663bf8..c77863ee 100644 --- a/test/src/emulator.rs +++ b/test/src/emulator.rs @@ -82,11 +82,13 @@ impl Emulator

{ let runtime = Runtime::new(executor, sender); - let (state, task) = if let Some(preset) = preset { - preset.boot() - } else { - program.boot() - }; + let (state, task) = runtime.enter(|| { + if let Some(preset) = preset { + preset.boot() + } else { + program.boot() + } + }); let mut emulator = Self { state, @@ -108,7 +110,9 @@ impl Emulator

{ } pub fn update(&mut self, program: &P, message: P::Message) { - let task = program.update(&mut self.state, message); + let task = self + .runtime + .enter(|| program.update(&mut self.state, message)); self.resubscribe(program); @@ -285,10 +289,11 @@ impl Emulator

{ self.cache = Some(user_interface.into_cache()); - let task = + let task = self.runtime.enter(|| { Task::batch(messages.into_iter().map(|message| { program.update(&mut self.state, message) - })); + })) + }); self.resubscribe(program); self.wait_for(task); @@ -357,11 +362,14 @@ impl Emulator

{ } pub fn resubscribe(&mut self, program: &P) { - self.runtime.track(subscription::into_recipes( - program.subscription(&self.state).map(|message| { - Event::Action(Action::Runtime(runtime::Action::Output(message))) - }), - )); + self.runtime + .track(subscription::into_recipes(self.runtime.enter(|| { + program.subscription(&self.state).map(|message| { + Event::Action(Action::Runtime(runtime::Action::Output( + message, + ))) + }) + }))); } pub fn view(