From 3afcd68171350ce0c8f34b2bf05bb7ec9c55fca8 Mon Sep 17 00:00:00 2001 From: Christopher Tso Date: Mon, 27 Apr 2026 13:37:10 +0200 Subject: [PATCH] fix(test): raise input.test.ts pipeline timeouts to 30s (follow-up to #1170) The `pipeline input` describe block in `apps/cli/test/commands/eval/pipeline/input.test.ts` exhibits the same 5s-default timeout flake under suite contention as the e2e test fixed in #1170. Each test spawns a `bun apps/cli/src/cli.ts pipeline input ...` subprocess that completes in ~1-2s in isolation but routinely overshoots 5s under `bun --filter agentv test` contention. Apply the same per-test timeout bump (`it(name, fn, 30_000)`) to all 10 tests in the describe block. The user brief named three sibling tests (`writes code_graders/.json for deterministic assertions`, `omits experiment from manifest...`, `falls back to eval file basename...`); the remaining seven exhibited identical SIGTERM-at-5s failures in the same suite run, so the bump is applied uniformly to prevent partial coverage churn. Same one-line treatment per the #1170 precedent. --- .../test/commands/eval/pipeline/input.test.ts | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/apps/cli/test/commands/eval/pipeline/input.test.ts b/apps/cli/test/commands/eval/pipeline/input.test.ts index cbb4e54a..d814675e 100644 --- a/apps/cli/test/commands/eval/pipeline/input.test.ts +++ b/apps/cli/test/commands/eval/pipeline/input.test.ts @@ -19,7 +19,7 @@ describe('pipeline input', () => { const manifest = JSON.parse(await readFile(join(OUT_DIR, 'manifest.json'), 'utf8')); expect(manifest.test_ids).toEqual(['test-01']); expect(manifest.eval_file).toContain('input-test.eval.yaml'); - }); + }, 30_000); it('writes per-test input.json with input and input_files', async () => { const { execa } = await import('execa'); @@ -30,7 +30,7 @@ describe('pipeline input', () => { ); expect(input.input).toHaveLength(1); expect(input.input[0].content).toBe('hello world'); - }); + }, 30_000); it('writes code_graders/.json with resolved command', async () => { const { execa } = await import('execa'); @@ -44,7 +44,7 @@ describe('pipeline input', () => { ); expect(grader.command).toBeDefined(); expect(grader.name).toBe('contains_hello'); - }); + }, 30_000); it('writes llm_graders/.json with prompt content', async () => { const { execa } = await import('execa'); @@ -58,7 +58,7 @@ describe('pipeline input', () => { ); expect(grader.prompt_content).toBeDefined(); expect(grader.name).toBe('relevance'); - }); + }, 30_000); it('writes criteria.md', async () => { const { execa } = await import('execa'); @@ -66,7 +66,7 @@ describe('pipeline input', () => { const criteria = await readFile(join(OUT_DIR, 'input-test', 'test-01', 'criteria.md'), 'utf8'); expect(criteria).toContain('Response echoes the input'); - }); + }, 30_000); it('writes invoke.json', async () => { const { execa } = await import('execa'); @@ -76,7 +76,7 @@ describe('pipeline input', () => { await readFile(join(OUT_DIR, 'input-test', 'test-01', 'invoke.json'), 'utf8'), ); expect(invoke.kind).toBeDefined(); - }); + }, 30_000); it('writes experiment to manifest when --experiment is provided', async () => { const { execa } = await import('execa'); @@ -93,7 +93,7 @@ describe('pipeline input', () => { const manifest = JSON.parse(await readFile(join(OUT_DIR, 'manifest.json'), 'utf8')); expect(manifest.experiment).toBe('without_skills'); - }); + }, 30_000); it('omits experiment from manifest when --experiment is not provided', async () => { const { execa } = await import('execa'); @@ -101,7 +101,7 @@ describe('pipeline input', () => { const manifest = JSON.parse(await readFile(join(OUT_DIR, 'manifest.json'), 'utf8')); expect(manifest.experiment).toBeUndefined(); - }); + }, 30_000); it('writes code_graders/.json for deterministic assertions', async () => { const { execa } = await import('execa'); @@ -127,7 +127,7 @@ describe('pipeline input', () => { expect(regexGrader.name).toBe('matches_pattern'); expect(regexGrader.type).toBe('regex'); expect(regexGrader.value).toBe('h[aeiou]llo'); - }); + }, 30_000); it('falls back to eval file basename for suite directory when name is absent', async () => { const { execa } = await import('execa'); @@ -141,5 +141,5 @@ describe('pipeline input', () => { const manifest = JSON.parse(await readFile(join(OUT_DIR, 'manifest.json'), 'utf8')); expect(manifest.suite).toBe('no-name'); - }); + }, 30_000); });