fix(core): size the win32 test deadline to the runners' cold-spawn tail, pin loop latency-additivity (#90)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
787bb3d616
commit
d3c8f1da7b
2 files changed
+82
-4
No files matched your search
@@ -3,14 +3,30 @@
|
||||
* many core tests spawn a real shell (Git-Bash on the Windows CI runners) or write the
|
||||
* full Agent State layout, and Windows runner I/O variance (cold shell spawns, Defender
|
||||
* first-touch scans, slow-disk moments) has pushed individually fast tests past vitest's
|
||||
* 5s default — a different test on each run. A larger failure deadline changes nothing
|
||||
* for passing tests; POSIX keeps the 5s default to fail fast during local development.
|
||||
* 5s default — a different test on each run.
|
||||
*
|
||||
* The deadline's first sizing (30s) turned out to be inside that variance tail: on one
|
||||
* cold runner (PR #66's merge-ref run) the suite-start burst of first spawns across
|
||||
* parallel workers put environment.test.ts's single-spawn write at 28.1s PASSING and
|
||||
* engine.test.ts's first test at 35.7s FAILING, while runs of the same code minutes
|
||||
* before and after finished the failing test in ~1.4s. The slowdown tracked OS work
|
||||
* only — pure-JS test files stayed at normal speed in the same run — so the flow
|
||||
* terminates and merely waits on the OS. Amplification confirms it: injecting spawn
|
||||
* latency into the same test (a PENGUIN_SHELL shim sleeping before bash) reproduces the
|
||||
* failure exactly at 30s injected vs the old 30s deadline, with the flow completing
|
||||
* ~70ms after the spawn at every magnitude tried — tool latency flows through 1:1, the
|
||||
* loop adds no waits of its own (pinned platform-neutrally by the "slow tool delays the
|
||||
* run only by its own latency" test in test/engine.test.ts). 120s clears the observed
|
||||
* tail with headroom while still bounding a genuinely hung test.
|
||||
*
|
||||
* A larger failure deadline changes nothing for passing tests; POSIX keeps the 5s
|
||||
* default to fail fast during local development.
|
||||
*/
|
||||
import { defineConfig } from "vitest/config";
|
||||
|
||||
export default defineConfig({
|
||||
test: {
|
||||
environment: "node",
|
||||
testTimeout: process.platform === "win32" ? 30_000 : 5_000,
|
||||
testTimeout: process.platform === "win32" ? 120_000 : 5_000,
|
||||
},
|
||||
});
|
||||
Reference in new issue
Block a user