test: give Core's import-safety tests a timeout that holds under full verify load
CI / verify (pull_request) Successful in 1m5s
CI / infrastructure-smoke (pull_request) Successful in 37s
CI / migration-smoke (pull_request) Successful in 1m55s
CI / image-build (pull_request) Successful in 24s
CI / deploy-smoke (same-origin) (pull_request) Successful in 49s
CI / deploy-smoke (split) (pull_request) Successful in 1m31s
CI / verify (pull_request) Successful in 1m5s
CI / infrastructure-smoke (pull_request) Successful in 37s
CI / migration-smoke (pull_request) Successful in 1m55s
CI / image-build (pull_request) Successful in 24s
CI / deploy-smoke (same-origin) (pull_request) Successful in 49s
CI / deploy-smoke (split) (pull_request) Successful in 1m31s
Four Core tests prove that importing a module has no side effects. Each one does a cold dynamic import() of a large Core source graph inside its test body: - doctor-import - module-http-import - cli-bootstrap-platform-owner - cli-create-initial-owner (its first test) Vitest transforms and evaluates that graph on demand, so the CPU-bound cost counts against the default 5 s per-test timeout. Ordinary test files import at the top level, outside any test timeout. There is no subprocess, shared resource, or test bug. Measured on six cores: - alone: 0.7–1.2 s; - alongside five other packages' suites, as in a full pnpm verify: 3.0–5.4 s (doctor-import reached 5,400 ms). A shared IMPORT_SAFETY_TEST_TIMEOUT_MS of 30 s (core/tests/support/ import-safety.ts) now applies to exactly these four tests. That is about five times the slowest time measured under load, the same as the repository's integration-test timeout, and still bounded, so an import that genuinely hangs fails. Assertions, coverage, the global Vitest timeout, parallelism, and production code are unchanged; there are no retries. Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
b1e3244c1d
commit
796ad4f16e
@@ -0,0 +1,19 @@
|
||||
/**
|
||||
* The per-test timeout for Core's import-safety tests, and only those.
|
||||
*
|
||||
* Each of these tests proves that importing a module does nothing (no I/O, no connection, no output)
|
||||
* by performing a cold dynamic `import()` of a large Core source graph inside the test body. Vitest
|
||||
* transforms and evaluates that whole graph on demand, and that work is CPU-bound. An ordinary test
|
||||
* file's own top-level imports run before its tests start and fall under no per-test timeout; these
|
||||
* deliberately do not, so the cost lands inside Vitest's default 5-second test timeout.
|
||||
*
|
||||
* Alone they take about 0.7–1.2 s. During a full `pnpm verify`, Turbo runs every package's suite at
|
||||
* once and the CPU is saturated. Reproduced locally (six cores, Core's suite alongside five other
|
||||
* packages' suites), the same tests took 3.0–5.4 s, and so timed out intermittently.
|
||||
*
|
||||
* 30 seconds is about five times the slowest time measured under load, which leaves room for slower
|
||||
* shared CI runners. It matches the repository's integration-test timeout. It is still bounded, so a
|
||||
* module that genuinely hangs while being imported, for example on a network call, still fails. The
|
||||
* assertions themselves are unchanged: these tests fail on what an import does, never on speed.
|
||||
*/
|
||||
export const IMPORT_SAFETY_TEST_TIMEOUT_MS = 30_000;
|
||||
Reference in New Issue
Block a user