mirror of
https://github.com/QwenLM/qwen-code.git
synced 2026-08-16 04:05:15 +00:00
The self-hosted CI runners are heavily oversubscribed (core runs maxThreads: 16), and a recurring class of tests blows vitest's 5s default timeout purely under that contention — not from any logic fault. Observed repeatedly across unrelated PRs (#7213, #7219, and noted in prior sessions): - packages/core/src/utils/shell-ast-parser-lazy.test.ts — fully mocked, but the dynamic import + async coordination exceeds 5s when 16 threads contend. - packages/cli/src/serve/workspace-registration-store.test.ts — tempdir round-trip. - packages/core/src/extension/github.test.ts > extractFile — its waitForFileData helper polled a FIXED 1_000 setImmediate turns, which elapse in <100ms while the tar extraction I/O is still catching up, throwing 'Timed out waiting for extracted data'. Fixes: - testTimeout: 15000 in the core and cli vitest configs — 3x the default. Assertions still fail instantly; only the timeout ceiling grows, so this masks no logic bug (a real hang still fails, just later, and the job timeout still bounds it). - waitForFileData now polls a real ~10s wall-clock budget (2_000 x 5ms) instead of a fixed iteration count, so a slow extraction is awaited rather than raced. Stays under the 15s ceiling. These are the deterministic root-cause fixes for the flake class the autofix loop and CI Failure Patrol were papering over with reruns. Co-authored-by: wenshao <wenshao@example.com>
44 lines
1.2 KiB
TypeScript
44 lines
1.2 KiB
TypeScript
/**
|
|
* @license
|
|
* Copyright 2025 Google LLC
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
import { defineConfig } from 'vitest/config';
|
|
|
|
export default defineConfig({
|
|
test: {
|
|
// Raise the per-test ceiling above vitest's 5s default: the self-hosted
|
|
// CI runners are heavily oversubscribed (maxThreads: 16 below), and I/O-
|
|
// or WASM-load-bound tests (e.g. the web-tree-sitter lazy runtime, tar
|
|
// extraction) blow 5s purely under contention, not from any logic fault.
|
|
// Assertions still fail instantly; only the timeout ceiling grows.
|
|
testTimeout: 15000,
|
|
reporters: ['default', 'junit'],
|
|
silent: true,
|
|
setupFiles: ['./test-setup.ts'],
|
|
outputFile: {
|
|
junit: 'junit.xml',
|
|
},
|
|
coverage: {
|
|
enabled: true,
|
|
provider: 'v8',
|
|
reportsDirectory: './coverage',
|
|
include: ['src/**/*'],
|
|
reporter: [
|
|
['text', { file: 'full-text-summary.txt' }],
|
|
'html',
|
|
'json',
|
|
'lcov',
|
|
'cobertura',
|
|
['json-summary', { outputFile: 'coverage-summary.json' }],
|
|
],
|
|
},
|
|
poolOptions: {
|
|
threads: {
|
|
minThreads: 8,
|
|
maxThreads: 16,
|
|
},
|
|
},
|
|
},
|
|
});
|