Commit Graph

4 Commits

  • tests: serialize process-heavy Windows CI suites (#18943)
    ## Why
    
    A [Windows Cargo
    build](https://github.com/openai/codex/actions/runs/24754807756/job/72425641062)
    on `main` timed out in several unrelated-looking suites at the same
    time:
    
    - `codex-app-server` account tests failed before account logic, while
    `mcp.initialize()` was waiting for the first JSON-RPC response.
    - `codex-core` `apply_patch_cli` tests timed out while running full
    Codex/apply_patch turns.
    - `codex-windows-sandbox` legacy session tests timed out while creating
    restricted-token child processes and private desktops.
    
    The app-server log reached the test harness write path in
    [`McpProcess::initialize_with_params`](https://github.com/openai/codex/blob/731b54d08fb93aec31fb020999a62447886f3ab3/codex-rs/app-server/tests/common/mcp_process.rs#L244-L263),
    but never printed the matching stdout read from
    [`read_jsonrpc_message`](https://github.com/openai/codex/blob/731b54d08fb93aec31fb020999a62447886f3ab3/codex-rs/app-server/tests/common/mcp_process.rs#L1123-L1128).
    The server initialize handler is a small bookkeeping/response path
    ([`message_processor.rs`](https://github.com/openai/codex/blob/731b54d08fb93aec31fb020999a62447886f3ab3/codex-rs/app-server/src/message_processor.rs#L601-L728)),
    so the failure looks like Windows runner process/pipe scheduling
    starvation rather than account-specific behavior.
    
    ## What Changed
    
    This updates `.config/nextest.toml` to serialize two process-heavy sets:
    
    - `codex-core` tests matching `package(codex-core) & kind(test) &
    test(apply_patch_cli)`
    - `codex-windows-sandbox` tests matching `package(codex-windows-sandbox)
    & test(legacy_)`
    
    `codex-app-server` integration tests were already serialized inside
    their own package; this change reduces overlap with the other suites
    that were saturating the runner at the same time.
    
    ## Verification
    
    - `cargo nextest list --filterset "package(codex-core) & kind(test) &
    test(apply_patch_cli)"`
    - `cargo nextest list --filterset "package(codex-windows-sandbox) &
    test(legacy_)"`
    
    The Windows sandbox filter naturally lists no tests on macOS, but it
    validates the nextest filter/config syntax locally.
  • Stabilize protocol schema fixture generation (#13886)
    ## What changed
    - TypeScript schema fixture generation now goes through in-memory tree
    helpers rather than a heavier on-disk generation path.
    - The comparison logic normalizes generated banner and path differences
    that are not semantically relevant to the exported schema.
    - TypeScript and JSON fixture coverage are split into separate tests,
    and the expensive schema-export tests are serialized in `nextest`.
    
    ## Why this fixes the flake
    - The original fixture coverage mixed several heavy codegen paths into
    one monolithic test and then compared generated output that included
    incidental banner/path differences.
    - On Windows CI, that combination created both runtime pressure and
    output variance unrelated to the schema shapes we actually care about.
    - Splitting the coverage isolates failures by format, in-memory
    generation reduces filesystem churn, normalization strips generator
    noise, and serializing the heavy tests removes parallel resource
    contention.
    
    ## Scope
    - Production helper change plus test changes.
  • fix flaky test: approval_matrix_covers_all_modes (#7028)
    looks like it sometimes flake around 30. let's give it more time.
  • Add test timeout (#6612)
    Add an overall test timeout of 30s.