diff --git a/codex-rs/Cargo.lock b/codex-rs/Cargo.lock index 2bd379252a..69e8f66b52 100644 --- a/codex-rs/Cargo.lock +++ b/codex-rs/Cargo.lock @@ -2870,7 +2870,6 @@ dependencies = [ "codex-plugin", "codex-protocol", "codex-rmcp-client", - "codex-utils-absolute-path", "codex-utils-plugins", "futures", "pretty_assertions", diff --git a/codex-rs/app-server/tests/suite/fuzzy_file_search.rs b/codex-rs/app-server/tests/suite/fuzzy_file_search.rs index f508e0c987..f1e0c7b752 100644 --- a/codex-rs/app-server/tests/suite/fuzzy_file_search.rs +++ b/codex-rs/app-server/tests/suite/fuzzy_file_search.rs @@ -344,6 +344,7 @@ async fn test_fuzzy_file_search_accepts_cancellation_token() -> Result<()> { } #[tokio::test(flavor = "multi_thread", worker_threads = 2)] +#[cfg_attr(windows, ignore = "temporary CI isolation for #19606 Windows hang")] async fn test_fuzzy_file_search_session_streams_updates() -> Result<()> { let codex_home = TempDir::new()?; let root = TempDir::new()?; diff --git a/codex-rs/app-server/tests/suite/v2/account.rs b/codex-rs/app-server/tests/suite/v2/account.rs index 2d75fd10a2..3523c7ecc1 100644 --- a/codex-rs/app-server/tests/suite/v2/account.rs +++ b/codex-rs/app-server/tests/suite/v2/account.rs @@ -954,6 +954,7 @@ async fn login_account_api_key_rejected_when_forced_chatgpt() -> Result<()> { } #[tokio::test] +#[cfg_attr(windows, ignore = "temporary CI isolation for #19606 Windows hang")] async fn login_account_chatgpt_rejected_when_forced_api() -> Result<()> { let codex_home = TempDir::new()?; create_config_toml( @@ -1122,6 +1123,7 @@ async fn login_account_chatgpt_device_code_succeeds_and_notifies() -> Result<()> } #[tokio::test] +#[cfg_attr(windows, ignore = "temporary CI isolation for #19606 Windows hang")] async fn login_account_chatgpt_device_code_failure_notifies_without_account_update() -> Result<()> { let codex_home = TempDir::new()?; let mock_server = MockServer::start().await; diff --git a/codex-rs/app-server/tests/suite/v2/command_exec.rs b/codex-rs/app-server/tests/suite/v2/command_exec.rs index 83718a8dc7..22ba913abc 100644 --- a/codex-rs/app-server/tests/suite/v2/command_exec.rs +++ b/codex-rs/app-server/tests/suite/v2/command_exec.rs @@ -389,6 +389,7 @@ async fn command_exec_rejects_disable_timeout_with_timeout_ms() -> Result<()> { } #[tokio::test] +#[cfg_attr(windows, ignore = "temporary CI isolation for #19606 Windows hang")] async fn command_exec_rejects_disable_output_cap_with_output_bytes_cap() -> Result<()> { let server = create_mock_responses_server_sequence_unchecked(Vec::new()).await; let codex_home = TempDir::new()?; @@ -465,6 +466,7 @@ async fn command_exec_rejects_negative_timeout_ms() -> Result<()> { } #[tokio::test] +#[cfg_attr(windows, ignore = "temporary CI isolation for #19606 Windows hang")] async fn command_exec_without_process_id_rejects_streaming() -> Result<()> { let server = create_mock_responses_server_sequence_unchecked(Vec::new()).await; let codex_home = TempDir::new()?; diff --git a/codex-rs/app-server/tests/suite/v2/config_rpc.rs b/codex-rs/app-server/tests/suite/v2/config_rpc.rs index f32b5808c6..69bd85997d 100644 --- a/codex-rs/app-server/tests/suite/v2/config_rpc.rs +++ b/codex-rs/app-server/tests/suite/v2/config_rpc.rs @@ -173,6 +173,7 @@ view_image = false } #[tokio::test(flavor = "multi_thread", worker_threads = 2)] +#[cfg_attr(windows, ignore = "temporary CI isolation for #19606 Windows hang")] async fn config_read_includes_nested_web_search_tool_config() -> Result<()> { let codex_home = TempDir::new()?; write_config( @@ -661,6 +662,7 @@ model = "gpt-old" } #[tokio::test(flavor = "multi_thread", worker_threads = 2)] +#[cfg_attr(windows, ignore = "temporary CI isolation for #19606 Windows hang")] async fn config_batch_write_applies_multiple_edits() -> Result<()> { let tmp_dir = TempDir::new()?; let codex_home = tmp_dir.path().canonicalize()?; diff --git a/codex-rs/app-server/tests/suite/v2/connection_handling_websocket_unix.rs b/codex-rs/app-server/tests/suite/v2/connection_handling_websocket_unix.rs index 591b70af09..c80f2f30a8 100644 --- a/codex-rs/app-server/tests/suite/v2/connection_handling_websocket_unix.rs +++ b/codex-rs/app-server/tests/suite/v2/connection_handling_websocket_unix.rs @@ -57,6 +57,7 @@ async fn websocket_transport_ctrl_c_waits_for_running_turn_before_exit() -> Resu } #[tokio::test] +#[cfg_attr(windows, ignore = "temporary CI isolation for #19606 Windows hang")] async fn websocket_transport_second_ctrl_c_forces_exit_while_turn_running() -> Result<()> { let GracefulCtrlCFixture { _codex_home, diff --git a/codex-rs/app-server/tests/suite/v2/experimental_feature_list.rs b/codex-rs/app-server/tests/suite/v2/experimental_feature_list.rs index 30b4c0f325..9eb7189634 100644 --- a/codex-rs/app-server/tests/suite/v2/experimental_feature_list.rs +++ b/codex-rs/app-server/tests/suite/v2/experimental_feature_list.rs @@ -156,6 +156,7 @@ async fn experimental_feature_list_marks_apps_and_plugins_disabled_by_workspace_ } #[tokio::test] +#[cfg_attr(windows, ignore = "temporary CI isolation for #19606 Windows hang")] async fn experimental_feature_enablement_set_applies_to_global_and_thread_config_reads() -> Result<()> { let codex_home = TempDir::new()?; diff --git a/codex-rs/app-server/tests/suite/v2/external_agent_config.rs b/codex-rs/app-server/tests/suite/v2/external_agent_config.rs index 049256b602..06c400edf1 100644 --- a/codex-rs/app-server/tests/suite/v2/external_agent_config.rs +++ b/codex-rs/app-server/tests/suite/v2/external_agent_config.rs @@ -123,6 +123,7 @@ async fn external_agent_config_import_sends_completion_notification_for_local_pl } #[tokio::test] +#[cfg_attr(windows, ignore = "temporary CI isolation for #19606 Windows hang")] async fn external_agent_config_import_sends_completion_notification_after_pending_plugins_finish() -> Result<()> { let codex_home = TempDir::new()?; diff --git a/codex-rs/app-server/tests/suite/v2/fs.rs b/codex-rs/app-server/tests/suite/v2/fs.rs index 2e0b8a10b9..122005926c 100644 --- a/codex-rs/app-server/tests/suite/v2/fs.rs +++ b/codex-rs/app-server/tests/suite/v2/fs.rs @@ -371,6 +371,7 @@ async fn fs_write_file_rejects_invalid_base64() -> Result<()> { } #[tokio::test(flavor = "multi_thread", worker_threads = 2)] +#[cfg_attr(windows, ignore = "temporary CI isolation for #19606 Windows hang")] async fn fs_methods_reject_relative_paths() -> Result<()> { let codex_home = TempDir::new()?; let absolute_file = codex_home.path().join("absolute.txt"); diff --git a/codex-rs/app-server/tests/suite/v2/mcp_server_elicitation.rs b/codex-rs/app-server/tests/suite/v2/mcp_server_elicitation.rs index 13ebe0b99c..30b9bd5eca 100644 --- a/codex-rs/app-server/tests/suite/v2/mcp_server_elicitation.rs +++ b/codex-rs/app-server/tests/suite/v2/mcp_server_elicitation.rs @@ -73,6 +73,7 @@ const TOOL_CALL_ID: &str = "call-calendar-confirm"; const ELICITATION_MESSAGE: &str = "Allow this request?"; #[tokio::test(flavor = "multi_thread", worker_threads = 4)] +#[cfg_attr(windows, ignore = "temporary CI isolation for #19606 Windows hang")] async fn mcp_server_elicitation_round_trip() -> Result<()> { let responses_server = responses::start_mock_server().await; let tool_call_arguments = serde_json::to_string(&json!({}))?; diff --git a/codex-rs/app-server/tests/suite/v2/plugin_install.rs b/codex-rs/app-server/tests/suite/v2/plugin_install.rs index 8d534f784c..a0fe3ebba2 100644 --- a/codex-rs/app-server/tests/suite/v2/plugin_install.rs +++ b/codex-rs/app-server/tests/suite/v2/plugin_install.rs @@ -573,6 +573,7 @@ async fn plugin_install_tracks_analytics_event() -> Result<()> { } #[tokio::test] +#[cfg_attr(windows, ignore = "temporary CI isolation for #19606 Windows hang")] async fn plugin_install_returns_apps_needing_auth() -> Result<()> { let connectors = vec![ AppInfo { diff --git a/codex-rs/app-server/tests/suite/v2/plugin_list.rs b/codex-rs/app-server/tests/suite/v2/plugin_list.rs index a10ce3e5af..7cfe08f205 100644 --- a/codex-rs/app-server/tests/suite/v2/plugin_list.rs +++ b/codex-rs/app-server/tests/suite/v2/plugin_list.rs @@ -336,6 +336,7 @@ async fn plugin_list_returns_empty_when_workspace_codex_plugins_disabled() -> Re } #[tokio::test] +#[cfg_attr(windows, ignore = "temporary CI isolation for #19606 Windows hang")] async fn plugin_list_reuses_cached_workspace_codex_plugins_setting() -> Result<()> { let codex_home = TempDir::new()?; let repo_root = TempDir::new()?; @@ -548,6 +549,7 @@ async fn plugin_list_uses_alternate_discoverable_manifest_and_keeps_undiscoverab } #[tokio::test] +#[cfg_attr(windows, ignore = "temporary CI isolation for #19606 Windows hang")] async fn plugin_list_accepts_omitted_cwds() -> Result<()> { let codex_home = TempDir::new()?; std::fs::create_dir_all(codex_home.path().join(".agents/plugins"))?; @@ -1028,6 +1030,7 @@ async fn plugin_list_accepts_legacy_string_default_prompt() -> Result<()> { } #[tokio::test] +#[cfg_attr(windows, ignore = "temporary CI isolation for #19606 Windows hang")] async fn app_server_startup_remote_plugin_sync_runs_once() -> Result<()> { let codex_home = TempDir::new()?; let server = MockServer::start().await; diff --git a/codex-rs/app-server/tests/suite/v2/plugin_read.rs b/codex-rs/app-server/tests/suite/v2/plugin_read.rs index f475abfd7c..af32b8fba0 100644 --- a/codex-rs/app-server/tests/suite/v2/plugin_read.rs +++ b/codex-rs/app-server/tests/suite/v2/plugin_read.rs @@ -922,6 +922,7 @@ async fn plugin_read_describes_uninstalled_git_source_without_cloning() -> Resul } #[tokio::test] +#[cfg_attr(windows, ignore = "temporary CI isolation for #19606 Windows hang")] async fn plugin_read_returns_invalid_request_when_plugin_is_missing() -> Result<()> { let codex_home = TempDir::new()?; let repo_root = TempDir::new()?; diff --git a/codex-rs/app-server/tests/suite/v2/plugin_uninstall.rs b/codex-rs/app-server/tests/suite/v2/plugin_uninstall.rs index 512cce3994..1ab641fa5b 100644 --- a/codex-rs/app-server/tests/suite/v2/plugin_uninstall.rs +++ b/codex-rs/app-server/tests/suite/v2/plugin_uninstall.rs @@ -20,6 +20,7 @@ use tokio::time::timeout; const DEFAULT_TIMEOUT: Duration = Duration::from_secs(10); #[tokio::test] +#[cfg_attr(windows, ignore = "temporary CI isolation for #19606 Windows hang")] async fn plugin_uninstall_removes_plugin_cache_and_config_entry() -> Result<()> { let codex_home = TempDir::new()?; write_installed_plugin(&codex_home, "debug", "sample-plugin")?; diff --git a/codex-rs/app-server/tests/suite/v2/rate_limits.rs b/codex-rs/app-server/tests/suite/v2/rate_limits.rs index b15960c1e9..6508c2da2d 100644 --- a/codex-rs/app-server/tests/suite/v2/rate_limits.rs +++ b/codex-rs/app-server/tests/suite/v2/rate_limits.rs @@ -59,6 +59,7 @@ async fn get_account_rate_limits_requires_auth() -> Result<()> { } #[tokio::test] +#[cfg_attr(windows, ignore = "temporary CI isolation for #19606 Windows hang")] async fn get_account_rate_limits_requires_chatgpt_auth() -> Result<()> { let codex_home = TempDir::new()?; @@ -264,6 +265,7 @@ async fn send_add_credits_nudge_email_requires_auth() -> Result<()> { } #[tokio::test] +#[cfg_attr(windows, ignore = "temporary CI isolation for #19606 Windows hang")] async fn send_add_credits_nudge_email_requires_chatgpt_auth() -> Result<()> { let codex_home = TempDir::new()?;