test: stabilize wildcard Wine execution

This commit is contained in:
Adam Perry
2026-06-22 23:55:49 +00:00
parent 74507dfef4
commit 16fae638dc
5 changed files with 54 additions and 3 deletions
@@ -648,6 +648,8 @@ async fn apply_patch_cli_delete_directory_reports_verification_error() -> Result
#[tokio::test(flavor = "multi_thread", worker_threads = 2)]
async fn apply_patch_cli_rejects_path_traversal_outside_workspace() -> Result<()> {
// TODO(anp): Assert the target-native Windows traversal error as well as the POSIX error.
skip_if_wine_exec!(Ok(()), "asserts a POSIX-specific traversal error message");
skip_if_no_network!(Ok(()));
let harness = apply_patch_harness().await?;
@@ -1320,6 +1322,11 @@ async fn apply_patch_shell_command_heredoc_with_cd_emits_turn_diff() -> Result<(
#[tokio::test(flavor = "multi_thread", worker_threads = 2)]
async fn apply_patch_turn_diff_paths_stay_repo_relative_when_session_cwd_is_nested() -> Result<()> {
// TODO(anp): Normalize remote Windows cwd prefixes when producing repo-relative patch paths.
skip_if_wine_exec!(
Ok(()),
"remote Windows diff paths retain their drive prefix"
);
skip_if_no_network!(Ok(()));
let harness = apply_patch_harness_with(|builder| {
@@ -25,6 +25,7 @@ use core_test_support::responses::ev_response_created;
use core_test_support::responses::mount_sse_sequence;
use core_test_support::responses::sse;
use core_test_support::responses::start_mock_server;
use core_test_support::skip_if_wine_exec;
use core_test_support::test_codex::TestCodex;
use pretty_assertions::assert_eq;
use serde_json::Value;
@@ -171,6 +172,10 @@ async fn run_extract_turn(test: &TestCodex, server: &MockServer) -> Result<Respo
#[tokio::test(flavor = "multi_thread", worker_threads = 2)]
async fn codex_apps_file_params_upload_environment_files_before_mcp_tool_call() -> Result<()> {
// TODO(anp): Read app-upload file arguments through the selected environment so remote Windows
// paths can be uploaded before the MCP call.
skip_if_wine_exec!(Ok(()), "app file uploads only read host-local paths");
let server = start_mock_server().await;
let apps_server = AppsTestServer::mount(&server).await?;
mount_file_upload_mocks(&server, STREAMED_FILE_SIZE as u64).await;
@@ -522,6 +522,11 @@ async fn unified_exec_resolves_relative_workdir() -> Result<()> {
#[tokio::test(flavor = "multi_thread", worker_threads = 2)]
async fn unified_exec_respects_workdir_override() -> Result<()> {
// TODO(anp): Construct unified-exec workdir overrides with target-native Windows path types.
skip_if_wine_exec!(
Ok(()),
"duplicates the Windows drive prefix in the workdir URI"
);
skip_if_no_network!(Ok(()));
skip_if_sandbox!(Ok(()));
skip_if_windows!(Ok(()));
@@ -1285,6 +1290,8 @@ async fn unified_exec_terminal_interaction_captures_delayed_output() -> Result<(
#[tokio::test(flavor = "multi_thread", worker_threads = 2)]
async fn unified_exec_emits_one_begin_and_one_end_event() -> Result<()> {
// TODO(anp): Use target-native commands and Windows process-session semantics in this fixture.
skip_if_wine_exec!(Ok(()), "uses bash and POSIX sleep/session behavior");
skip_if_no_network!(Ok(()));
skip_if_sandbox!(Ok(()));
skip_if_windows!(Ok(()));
+30
View File
@@ -280,6 +280,9 @@ async fn user_turn_local_image_applies_patch_budget() -> anyhow::Result<()> {
#[tokio::test(flavor = "multi_thread", worker_threads = 2)]
async fn view_image_tool_attaches_local_image() -> anyhow::Result<()> {
// TODO(anp): Load image fixtures through the selected environment's filesystem so target-native
// Windows paths work as well as host-local paths.
skip_if_wine_exec!(Ok(()), "view_image cannot read the remote Windows cwd yet");
skip_if_no_network!(Ok(()));
let server = start_mock_server().await;
@@ -674,6 +677,9 @@ async fn view_image_routes_to_selected_remote_environment() -> anyhow::Result<()
#[tokio::test(flavor = "multi_thread", worker_threads = 2)]
async fn view_image_tool_can_preserve_original_resolution_when_requested_on_gpt5_3_codex()
-> anyhow::Result<()> {
// TODO(anp): Load image fixtures through the selected environment's filesystem so target-native
// Windows paths work as well as host-local paths.
skip_if_wine_exec!(Ok(()), "view_image cannot read the remote Windows cwd yet");
skip_if_no_network!(Ok(()));
let server = start_mock_server().await;
@@ -843,6 +849,9 @@ async fn view_image_tool_errors_clearly_for_unsupported_detail_values() -> anyho
#[tokio::test(flavor = "multi_thread", worker_threads = 2)]
async fn view_image_tool_treats_null_detail_as_omitted() -> anyhow::Result<()> {
// TODO(anp): Load image fixtures through the selected environment's filesystem so target-native
// Windows paths work as well as host-local paths.
skip_if_wine_exec!(Ok(()), "view_image cannot read the remote Windows cwd yet");
skip_if_no_network!(Ok(()));
let server = start_mock_server().await;
@@ -933,6 +942,9 @@ async fn view_image_tool_treats_null_detail_as_omitted() -> anyhow::Result<()> {
#[tokio::test(flavor = "multi_thread", worker_threads = 2)]
async fn view_image_tool_resizes_when_model_lacks_original_detail_support() -> anyhow::Result<()> {
// TODO(anp): Load image fixtures through the selected environment's filesystem so target-native
// Windows paths work as well as host-local paths.
skip_if_wine_exec!(Ok(()), "view_image cannot read the remote Windows cwd yet");
skip_if_no_network!(Ok(()));
let server = start_mock_server().await;
@@ -1027,6 +1039,9 @@ async fn view_image_tool_resizes_when_model_lacks_original_detail_support() -> a
#[tokio::test(flavor = "multi_thread", worker_threads = 2)]
async fn view_image_tool_does_not_force_original_resolution_with_capability_only()
-> anyhow::Result<()> {
// TODO(anp): Load image fixtures through the selected environment's filesystem so target-native
// Windows paths work as well as host-local paths.
skip_if_wine_exec!(Ok(()), "view_image cannot read the remote Windows cwd yet");
skip_if_no_network!(Ok(()));
let server = start_mock_server().await;
@@ -1117,6 +1132,12 @@ async fn view_image_tool_does_not_force_original_resolution_with_capability_only
#[tokio::test(flavor = "multi_thread", worker_threads = 2)]
async fn view_image_tool_errors_when_path_is_directory() -> anyhow::Result<()> {
// TODO(anp): Resolve view_image paths through the selected environment before asserting
// target-native directory errors.
skip_if_wine_exec!(
Ok(()),
"view_image cannot inspect the remote Windows cwd yet"
);
skip_if_no_network!(Ok(()));
let server = start_mock_server().await;
@@ -1187,6 +1208,9 @@ async fn view_image_tool_errors_when_path_is_directory() -> anyhow::Result<()> {
#[tokio::test(flavor = "multi_thread", worker_threads = 2)]
async fn view_image_tool_turns_invalid_image_into_placeholder() -> anyhow::Result<()> {
// TODO(anp): Load image fixtures through the selected environment's filesystem so target-native
// Windows paths work as well as host-local paths.
skip_if_wine_exec!(Ok(()), "view_image cannot read the remote Windows cwd yet");
skip_if_no_network!(Ok(()));
let server = start_mock_server().await;
@@ -1251,6 +1275,12 @@ async fn view_image_tool_turns_invalid_image_into_placeholder() -> anyhow::Resul
#[tokio::test(flavor = "multi_thread", worker_threads = 2)]
async fn view_image_tool_errors_when_file_missing() -> anyhow::Result<()> {
// TODO(anp): Resolve view_image paths through the selected environment before asserting
// target-native missing-file errors.
skip_if_wine_exec!(
Ok(()),
"view_image cannot inspect the remote Windows cwd yet"
);
skip_if_no_network!(Ok(()));
let server = start_mock_server().await;
@@ -18,9 +18,11 @@ if [[ "${RUNNER_OS:-}" != "Windows" ]]; then
manual_rust_test_targets="$(printf '%s\n' "${manual_rust_test_targets}" | grep -v -- '-windows-cross-bin$' || true)"
fi
# Wine-exec wrappers have no Rust sources of their own and require the transitioned Windows
# toolchain, which the lint configuration does not register. Their native Rust test binaries are
# already covered through the corresponding native test targets.
# Generated `*-wine-exec-test` targets are Linux launchers around the host-native test binary and
# a separately transitioned Windows exec-server binary. The corresponding native test target is
# linted on Linux and macOS, while the exec-server binary is linted under `cfg(windows)` by the
# Windows lint job. Exclude only the launchers here because this lint configuration cannot analyze
# their transitioned data dependency.
wine_exec_test_targets="$(
./.github/scripts/run-bazel-query-ci.sh \
--output=label \