From eb752e43d9b7bd7dc5965ea20642bcf7f1a492d8 Mon Sep 17 00:00:00 2001 From: felixxia-oai Date: Wed, 12 Aug 2026 13:23:14 +0000 Subject: [PATCH] Run plugin app-server tests in automatic environments (#38189) ## What changed - Use the standard automatic test environment for plugin list, install, and uninstall app-server tests. - Keep the bundled stdio MCP test host-local because its fixture is a local executable. - Strengthen that test to verify the bundled server initializes and exposes its `echo` tool. GitOrigin-RevId: 06dac135b0cc0b28fc235d95a02129eecf8f8c09 --- .../tests/suite/v2/plugin_install.rs | 59 +++++-------------- .../app-server/tests/suite/v2/plugin_list.rs | 48 --------------- .../tests/suite/v2/plugin_uninstall.rs | 10 ---- 3 files changed, 15 insertions(+), 102 deletions(-) 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 b7db1407cb..26ce236f29 100644 --- a/codex-rs/app-server/tests/suite/v2/plugin_install.rs +++ b/codex-rs/app-server/tests/suite/v2/plugin_install.rs @@ -78,7 +78,6 @@ async fn plugin_install_rejects_relative_marketplace_paths() -> Result<()> { let codex_home = TempDir::new()?; let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -108,7 +107,6 @@ async fn plugin_install_rejects_missing_install_source() -> Result<()> { let codex_home = TempDir::new()?; let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -141,7 +139,6 @@ async fn plugin_install_rejects_multiple_install_sources() -> Result<()> { let codex_home = TempDir::new()?; let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -182,7 +179,6 @@ plugins = false )?; let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -252,7 +248,6 @@ async fn plugin_install_writes_remote_plugin_to_cloud_and_cache() -> Result<()> let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .with_env_overrides(&[(TEST_ALLOW_HTTP_REMOTE_PLUGIN_BUNDLE_DOWNLOADS, Some("1"))]) .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -355,7 +350,6 @@ async fn plugin_install_uses_remote_apps_needing_auth_response() -> Result<()> { let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .with_env_overrides(&[(TEST_ALLOW_HTTP_REMOTE_PLUGIN_BUNDLE_DOWNLOADS, Some("1"))]) .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -410,7 +404,6 @@ async fn plugin_install_rejects_missing_remote_bundle_url() -> Result<()> { let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -454,7 +447,6 @@ async fn plugin_install_rejects_plain_http_remote_bundle_url() -> Result<()> { let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -503,7 +495,6 @@ async fn plugin_install_rejects_invalid_remote_release_version() -> Result<()> { let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -538,7 +529,6 @@ async fn plugin_install_rejects_invalid_remote_plugin_name() -> Result<()> { write_remote_plugin_catalog_config(codex_home.path(), "https://example.invalid/backend-api/")?; let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -572,7 +562,6 @@ async fn plugin_install_tracks_analytics_when_remote_detail_fetch_fails() -> Res let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -631,7 +620,6 @@ async fn plugin_install_tracks_analytics_when_remote_install_is_rate_limited() - let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .with_env_overrides(&[(TEST_ALLOW_HTTP_REMOTE_PLUGIN_BUNDLE_DOWNLOADS, Some("1"))]) .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -701,7 +689,6 @@ async fn plugin_install_rejects_remote_plugin_disabled_by_admin_before_download( let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .with_env_overrides(&[(TEST_ALLOW_HTTP_REMOTE_PLUGIN_BUNDLE_DOWNLOADS, Some("1"))]) .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -765,7 +752,6 @@ async fn plugin_install_rejects_remote_plugin_not_available() -> Result<()> { let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -844,7 +830,6 @@ async fn plugin_install_rejects_when_workspace_codex_plugins_disabled() -> Resul let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -877,7 +862,6 @@ async fn plugin_install_returns_invalid_request_for_missing_marketplace_file() - let codex_home = TempDir::new()?; let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -922,7 +906,6 @@ async fn plugin_install_tracks_analytics_when_marketplace_file_cannot_be_read() let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -981,7 +964,6 @@ async fn plugin_install_returns_invalid_request_for_not_available_plugin() -> Re let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -1034,7 +1016,6 @@ async fn plugin_install_returns_invalid_request_for_disallowed_product_plugin() let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .with_args(&["--session-source", "atlas"]) .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -1088,7 +1069,6 @@ async fn plugin_install_tracks_analytics_event() -> Result<()> { let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -1154,7 +1134,6 @@ async fn plugin_install_failure_tracks_analytics_event() -> Result<()> { let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -1210,7 +1189,6 @@ async fn plugin_install_tracks_remote_plugin_analytics_event() -> Result<()> { let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .with_env_overrides(&[(TEST_ALLOW_HTTP_REMOTE_PLUGIN_BUNDLE_DOWNLOADS, Some("1"))]) .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -1268,7 +1246,6 @@ async fn plugin_install_preserves_status_when_remote_bundle_error_body_is_too_la let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .with_env_overrides(&[(TEST_ALLOW_HTTP_REMOTE_PLUGIN_BUNDLE_DOWNLOADS, Some("1"))]) .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -1402,7 +1379,6 @@ async fn plugin_install_returns_apps_needing_auth() -> Result<()> { let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; let directory_requests_before_install = server_control.directory_request_count(); @@ -1497,7 +1473,6 @@ async fn plugin_install_skips_mcp_oauth_for_chatgpt_dual_surface_plugin() -> Res let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -1551,7 +1526,6 @@ url = "https://example.com/allowed-mcp" let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -1606,7 +1580,6 @@ enabled = false let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -1769,7 +1742,6 @@ async fn plugin_install_starts_mcp_oauth_with_formerly_disallowed_plugin_app() - let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -1868,7 +1840,6 @@ async fn plugin_install_starts_mcp_oauth_through_configured_http_proxy() -> Resu let proxy_uri = proxy.uri(); let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .with_env_overrides(&[ ("HTTP_PROXY", Some(proxy_uri.as_str())), ("http_proxy", Some(proxy_uri.as_str())), @@ -1941,7 +1912,6 @@ connectors = true let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .with_env_overrides(&[("OPENAI_API_KEY", Some("test-api-key"))]) .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -1980,7 +1950,6 @@ async fn plugin_install_starts_remote_mcp_oauth_for_install_response_only_app() let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .with_env_overrides(&[(TEST_ALLOW_HTTP_REMOTE_PLUGIN_BUNDLE_DOWNLOADS, Some("1"))]) .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -2028,7 +1997,6 @@ async fn plugin_install_skips_remote_mcp_oauth_disabled_by_requirements() -> Res let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .with_env_overrides(&[(TEST_ALLOW_HTTP_REMOTE_PLUGIN_BUNDLE_DOWNLOADS, Some("1"))]) .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -2073,7 +2041,6 @@ async fn plugin_install_skips_remote_mcp_oauth_disabled_by_plugin_config() -> Re let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .with_env_overrides(&[(TEST_ALLOW_HTTP_REMOTE_PLUGIN_BUNDLE_DOWNLOADS, Some("1"))]) .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -2114,7 +2081,6 @@ async fn plugin_install_skips_remote_mcp_oauth_for_bundled_same_name_app() -> Re let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .with_env_overrides(&[(TEST_ALLOW_HTTP_REMOTE_PLUGIN_BUNDLE_DOWNLOADS, Some("1"))]) .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -2192,7 +2158,6 @@ async fn plugin_install_includes_formerly_disallowed_apps_needing_auth() -> Resu let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; let directory_requests_before_install = @@ -2280,6 +2245,7 @@ async fn plugin_install_makes_bundled_mcp_servers_available_to_followup_requests let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) + // The bundled stdio MCP fixture is a host-local executable. .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -2308,16 +2274,21 @@ async fn plugin_install_makes_bundled_mcp_servers_available_to_followup_requests .await?; let response: ListMcpServerStatusResponse = timeout(DEFAULT_TIMEOUT, mcp.read_response(request_id)).await??; + let [server] = response.data.as_slice() else { + bail!("expected exactly one bundled MCP server"); + }; + assert_eq!( - response - .data - .into_iter() - .map(|server| (server.name, server.plugin_id)) - .collect::>(), - vec![( - "sample-mcp".to_string(), - Some("sample-plugin@debug".to_string()), - )] + (server.name.as_str(), server.plugin_id.as_deref()), + ("sample-mcp", Some("sample-plugin@debug")), + ); + assert!( + server.server_info.is_some(), + "bundled MCP server did not initialize" + ); + assert!( + server.tools.contains_key("echo"), + "bundled MCP server did not expose its tools" ); let request_id = mcp 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 c69e544f67..927902d365 100644 --- a/codex-rs/app-server/tests/suite/v2/plugin_list.rs +++ b/codex-rs/app-server/tests/suite/v2/plugin_list.rs @@ -118,7 +118,6 @@ async fn plugin_list_skips_invalid_marketplace_file_and_reports_error() -> Resul let home = codex_home.path().to_string_lossy().into_owned(); let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .with_env_overrides(&[ ("HOME", Some(home.as_str())), ("USERPROFILE", Some(home.as_str())), @@ -180,7 +179,6 @@ enabled = true let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -272,7 +270,6 @@ enabled = true let mut app_server = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -373,7 +370,6 @@ enabled = true let mut app_server = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -449,7 +445,6 @@ enabled = true let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -473,7 +468,6 @@ async fn plugin_list_rejects_relative_cwds() -> Result<()> { let codex_home = TempDir::new()?; let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -553,7 +547,6 @@ async fn plugin_list_keeps_valid_marketplaces_when_another_marketplace_fails_to_ let home = codex_home.path().to_string_lossy().into_owned(); let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .with_env_overrides(&[ ("HOME", Some(home.as_str())), ("USERPROFILE", Some(home.as_str())), @@ -673,7 +666,6 @@ async fn plugin_list_returns_empty_when_workspace_codex_plugins_disabled() -> Re let home = codex_home.path().to_string_lossy().into_owned(); let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .without_managed_config() .with_env_overrides(&[ ("HOME", Some(home.as_str())), @@ -762,7 +754,6 @@ async fn plugin_list_reuses_cached_workspace_codex_plugins_setting() -> Result<( let home = codex_home.path().to_string_lossy().into_owned(); let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .without_managed_config() .with_env_overrides(&[ ("HOME", Some(home.as_str())), @@ -845,7 +836,6 @@ async fn plugin_list_uses_alternate_discoverable_manifest_and_keeps_undiscoverab let home = codex_home.path().to_string_lossy().into_owned(); let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .with_env_overrides(&[ ("HOME", Some(home.as_str())), ("USERPROFILE", Some(home.as_str())), @@ -969,7 +959,6 @@ async fn plugin_list_accepts_omitted_cwds() -> Result<()> { let home = codex_home.path().to_string_lossy().into_owned(); let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .with_env_overrides(&[ ("HOME", Some(home.as_str())), ("USERPROFILE", Some(home.as_str())), @@ -1025,7 +1014,6 @@ async fn plugin_list_returns_share_context_for_shared_local_plugin() -> Result<( let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -1112,7 +1100,6 @@ enabled = true let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build() .await?; timeout(DEFAULT_TIMEOUT, mcp.initialize()).await??; @@ -1238,7 +1225,6 @@ enabled = false let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -1385,7 +1371,6 @@ enabled = false let home = codex_home.path().to_string_lossy().into_owned(); let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .with_env_overrides(&[ ("HOME", Some(home.as_str())), ("USERPROFILE", Some(home.as_str())), @@ -1476,7 +1461,6 @@ async fn plugin_list_returns_plugin_interface_with_absolute_asset_paths() -> Res let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -1589,7 +1573,6 @@ async fn plugin_list_accepts_legacy_string_default_prompt() -> Result<()> { let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -1677,7 +1660,6 @@ enabled = true let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -1784,7 +1766,6 @@ async fn app_server_startup_sync_downloads_remote_installed_plugin_bundles() -> .join("plugins/cache/openai-curated-remote/linear/1.2.3"); let _mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .with_plugin_startup_tasks() .with_env_overrides(&[(TEST_ALLOW_HTTP_REMOTE_PLUGIN_BUNDLE_DOWNLOADS, Some("1"))]) .build_initialized_with_timeout(DEFAULT_TIMEOUT) @@ -1864,7 +1845,6 @@ async fn plugin_list_sync_upgrades_and_removes_remote_installed_plugin_bundles() let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .with_env_overrides(&[(TEST_ALLOW_HTTP_REMOTE_PLUGIN_BUNDLE_DOWNLOADS, Some("1"))]) .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -2053,7 +2033,6 @@ async fn plugin_list_includes_remote_marketplaces_when_remote_plugin_enabled() - let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -2225,7 +2204,6 @@ async fn plugin_list_honors_global_remote_catalog_cache_ttl() -> Result<()> { let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -2386,7 +2364,6 @@ async fn app_server_startup_refreshes_cached_remote_catalog_without_blocking_plu let mut app_server = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build() .await?; timeout(DEFAULT_TIMEOUT, app_server.initialize()).await??; @@ -2435,7 +2412,6 @@ async fn app_server_startup_refreshes_cached_remote_catalog_without_blocking_plu let mut app_server = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .with_plugin_startup_tasks() .build() .await?; @@ -2646,7 +2622,6 @@ async fn plugin_list_force_refetch_bypasses_fresh_global_remote_catalog_cache() let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build() .await?; timeout(DEFAULT_TIMEOUT, mcp.initialize()).await??; @@ -2799,7 +2774,6 @@ async fn plugin_list_includes_openai_curated_remote_collection_when_remote_plugi let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -2889,7 +2863,6 @@ async fn plugin_list_propagates_openai_curated_remote_collection_errors_when_rem let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -2933,7 +2906,6 @@ async fn plugin_list_skips_openai_curated_remote_collection_for_api_auth_when_re let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -2972,7 +2944,6 @@ async fn plugin_list_includes_api_curated_marketplace_for_api_auth_when_remote_p let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -3029,7 +3000,6 @@ plugins = true let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -3094,7 +3064,6 @@ remote_plugin = false let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -3147,7 +3116,6 @@ async fn plugin_list_does_not_query_openai_curated_remote_collection_by_default( let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -3200,7 +3168,6 @@ async fn plugin_list_vertical_kind_noops_when_remote_plugin_enabled() -> Result< let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -3254,7 +3221,6 @@ async fn plugin_list_does_not_append_global_remote_when_marketplace_kinds_are_ex let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -3333,7 +3299,6 @@ plugin_sharing = true let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -3442,7 +3407,6 @@ plugin_sharing = false let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -3527,7 +3491,6 @@ plugin_sharing = false let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .with_env_overrides(&[(TEST_ALLOW_HTTP_REMOTE_PLUGIN_BUNDLE_DOWNLOADS, Some("1"))]) .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -3613,7 +3576,6 @@ trusted_hash = "sha256:unrelated" let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .with_env_overrides(&[(TEST_ALLOW_HTTP_REMOTE_PLUGIN_BUNDLE_DOWNLOADS, Some("1"))]) .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -3705,7 +3667,6 @@ async fn plugin_installed_hook_trust_write_failure_stays_untrusted() -> Result<( let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .with_env_overrides(&[(TEST_ALLOW_HTTP_REMOTE_PLUGIN_BUNDLE_DOWNLOADS, Some("1"))]) .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -3786,7 +3747,6 @@ async fn plugin_list_fetches_workspace_directory_kind_when_remote_plugin_disable let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -4006,7 +3966,6 @@ plugin_sharing = false let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -4151,7 +4110,6 @@ async fn plugin_list_fetches_shared_with_me_kind() -> Result<()> { let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -4307,7 +4265,6 @@ plugin_sharing = false let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -4367,7 +4324,6 @@ plugin_sharing = true let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -4510,7 +4466,6 @@ async fn assert_disabled_remote_plugin_metadata( let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -4573,7 +4528,6 @@ remote_plugin = true let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -4609,7 +4563,6 @@ async fn plugin_list_fetches_featured_plugin_ids_without_chatgpt_auth() -> Resul let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -4648,7 +4601,6 @@ async fn plugin_list_uses_warmed_featured_plugin_ids_cache_on_first_request() -> let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .with_plugin_startup_tasks() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; 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 e21192356b..1e0d5d83e8 100644 --- a/codex-rs/app-server/tests/suite/v2/plugin_uninstall.rs +++ b/codex-rs/app-server/tests/suite/v2/plugin_uninstall.rs @@ -42,7 +42,6 @@ enabled = true let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -87,7 +86,6 @@ async fn plugin_uninstall_tracks_analytics_event() -> Result<()> { let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -142,7 +140,6 @@ plugins = false )?; let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -224,7 +221,6 @@ async fn plugin_uninstall_writes_remote_plugin_to_cloud_when_remote_plugin_enabl let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -312,7 +308,6 @@ async fn plugin_uninstall_uses_detail_scope_for_cache_namespace() -> Result<()> let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -379,7 +374,6 @@ async fn plugin_uninstall_accepts_workspace_remote_plugin_id_shape() -> Result<( let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -421,7 +415,6 @@ async fn plugin_uninstall_rejects_before_post_when_remote_detail_fetch_fails() - let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -466,7 +459,6 @@ async fn plugin_uninstall_rejects_remote_plugin_id_with_spaces_before_network_ca )?; let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -504,7 +496,6 @@ async fn plugin_uninstall_rejects_invalid_remote_plugin_id_before_network_call() )?; let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?; @@ -542,7 +533,6 @@ async fn plugin_uninstall_rejects_empty_remote_plugin_id() -> Result<()> { )?; let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) - .without_auto_env() .build_initialized_with_timeout(DEFAULT_TIMEOUT) .await?;