diff --git a/codex-rs/core/tests/suite/unified_exec.rs b/codex-rs/core/tests/suite/unified_exec.rs index c07fd20e5..2f7227708 100644 --- a/codex-rs/core/tests/suite/unified_exec.rs +++ b/codex-rs/core/tests/suite/unified_exec.rs @@ -1209,14 +1209,24 @@ async fn unified_exec_emits_one_begin_and_one_end_event() -> Result<()> { let mut begin_events = Vec::new(); let mut end_events = Vec::new(); + let mut task_completed = false; loop { let event_msg = wait_for_event(&codex, |_| true).await; match event_msg { - EventMsg::ExecCommandBegin(event) => begin_events.push(event), - EventMsg::ExecCommandEnd(event) => end_events.push(event), - EventMsg::TurnComplete(_) => break, + EventMsg::ExecCommandBegin(event) if event.call_id == open_call_id => { + begin_events.push(event); + } + EventMsg::ExecCommandEnd(event) if event.call_id == open_call_id => { + end_events.push(event); + } + EventMsg::TurnComplete(_) => { + task_completed = true; + } _ => {} } + if task_completed && !end_events.is_empty() { + break; + } } assert_eq!(