From 617d52bb5ec9d55d61200930af1a1d6ffd5e7695 Mon Sep 17 00:00:00 2001 From: Owen Lin Date: Thu, 13 Nov 2025 20:43:36 -0800 Subject: [PATCH] fix test --- .../app-server/tests/suite/v2/turn_start.rs | 61 ++++++++++--------- 1 file changed, 33 insertions(+), 28 deletions(-) diff --git a/codex-rs/app-server/tests/suite/v2/turn_start.rs b/codex-rs/app-server/tests/suite/v2/turn_start.rs index e4a4a65f4f..4261f8bec4 100644 --- a/codex-rs/app-server/tests/suite/v2/turn_start.rs +++ b/codex-rs/app-server/tests/suite/v2/turn_start.rs @@ -5,11 +5,14 @@ use app_test_support::create_mock_chat_completions_server; use app_test_support::create_mock_chat_completions_server_unchecked; use app_test_support::create_shell_sse_response; use app_test_support::to_response; +use codex_app_server_protocol::CommandExecutionStatus; +use codex_app_server_protocol::ItemStartedNotification; use codex_app_server_protocol::JSONRPCNotification; use codex_app_server_protocol::JSONRPCResponse; use codex_app_server_protocol::ParsedCommand; use codex_app_server_protocol::RequestId; use codex_app_server_protocol::ServerRequest; +use codex_app_server_protocol::ThreadItem; use codex_app_server_protocol::ThreadStartParams; use codex_app_server_protocol::ThreadStartResponse; use codex_app_server_protocol::TurnStartParams; @@ -18,8 +21,6 @@ use codex_app_server_protocol::TurnStartedNotification; use codex_app_server_protocol::UserInput as V2UserInput; use codex_core::protocol_config_types::ReasoningEffort; use codex_core::protocol_config_types::ReasoningSummary; -use codex_protocol::protocol::Event; -use codex_protocol::protocol::EventMsg; use core_test_support::skip_if_no_network; use pretty_assertions::assert_eq; use std::path::Path; @@ -261,11 +262,11 @@ async fn turn_start_exec_approval_toggle_v2() -> Result<()> { let ServerRequest::CommandExecutionRequestApproval { request_id, params } = server_req else { panic!("expected CommandExecutionRequestApproval request"); }; - assert_eq!(params.request.call_id, "call1"); + assert_eq!(params.item_id, "call1"); assert_eq!( - params.request.parsed_cmd, + params.metadata.parsed_cmd, vec![ParsedCommand::Unknown { - cmd: "python3 -c 'print(42)'".to_string() + cmd: "python3 -c 'print(42)'".to_string(), }] ); @@ -314,8 +315,6 @@ async fn turn_start_exec_approval_toggle_v2() -> Result<()> { #[tokio::test] async fn turn_start_updates_sandbox_and_cwd_between_turns_v2() -> Result<()> { - // When returning Result from a test, pass an Ok(()) to the skip macro - // so the early return type matches. The no-arg form returns unit. skip_if_no_network!(Ok(())); let tmp = TempDir::new()?; @@ -424,29 +423,35 @@ async fn turn_start_updates_sandbox_and_cwd_between_turns_v2() -> Result<()> { ) .await??; - let exec_begin_notification = timeout( - DEFAULT_READ_TIMEOUT, - mcp.read_stream_until_notification_message("codex/event/exec_command_begin"), - ) + let command_exec_item = timeout(DEFAULT_READ_TIMEOUT, async { + loop { + let item_started_notification = mcp + .read_stream_until_notification_message("item/started") + .await?; + let params = item_started_notification + .params + .clone() + .expect("item/started params"); + let item_started: ItemStartedNotification = + serde_json::from_value(params).expect("deserialize item/started notification"); + if matches!(item_started.item, ThreadItem::CommandExecution { .. }) { + return Ok::(item_started.item); + } + } + }) .await??; - let params = exec_begin_notification - .params - .clone() - .expect("exec_command_begin params"); - let event: Event = serde_json::from_value(params).expect("deserialize exec begin event"); - let exec_begin = match event.msg { - EventMsg::ExecCommandBegin(exec_begin) => exec_begin, - other => panic!("expected ExecCommandBegin event, got {other:?}"), + let ThreadItem::CommandExecution { + cwd, + command, + status, + .. + } = command_exec_item + else { + unreachable!("loop ensures we break on command execution items"); }; - assert_eq!(exec_begin.cwd, second_cwd); - assert_eq!( - exec_begin.command, - vec![ - "bash".to_string(), - "-lc".to_string(), - "echo second turn".to_string() - ] - ); + assert_eq!(cwd, second_cwd); + assert_eq!(command, "bash -lc echo second turn"); + assert_eq!(status, CommandExecutionStatus::InProgress); timeout( DEFAULT_READ_TIMEOUT,