From b22ae2a4da87976d0066dd04db0ef449d74ba4dd Mon Sep 17 00:00:00 2001 From: Vincent Koc Date: Tue, 23 Jun 2026 17:18:47 +0200 Subject: [PATCH] fix(qa): reject duplicate model bench controls --- scripts/bench-model.ts | 5 +++++ test/scripts/bench-model.test.ts | 14 ++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/scripts/bench-model.ts b/scripts/bench-model.ts index 69b9b050763..406809e31e4 100644 --- a/scripts/bench-model.ts +++ b/scripts/bench-model.ts @@ -40,12 +40,17 @@ function readValue(argv: string[], index: number, flag: string): string { } function validateCliArgs(argv: string[]): void { + const seenValueFlags = new Set(); for (let index = 0; index < argv.length; index += 1) { const arg = argv[index] ?? ""; if (BOOLEAN_FLAGS.has(arg)) { continue; } if (VALUE_FLAGS.has(arg)) { + if (seenValueFlags.has(arg)) { + throw new CliArgumentError(`${arg} was provided more than once`); + } + seenValueFlags.add(arg); readValue(argv, index, arg); index += 1; continue; diff --git a/test/scripts/bench-model.test.ts b/test/scripts/bench-model.test.ts index 12fe5977011..2581d3d44fd 100644 --- a/test/scripts/bench-model.test.ts +++ b/test/scripts/bench-model.test.ts @@ -59,6 +59,20 @@ describe("scripts/bench-model", () => { expect(result.stderr).not.toContain("Missing ANTHROPIC_API_KEY"); }); + it("rejects duplicate value flags before checking provider credentials", () => { + expect(() => testing.parseArgs(["--runs", "1", "--runs", "2"])).toThrow( + "--runs was provided more than once", + ); + + const result = runBenchModel(["--runs", "1", "--runs", "2"]); + + expect(result.status).toBe(1); + expect(result.stdout).toBe(""); + expect(result.stderr.trim()).toBe("--runs was provided more than once"); + expect(result.stderr).not.toContain("Missing ANTHROPIC_API_KEY"); + expect(result.stderr).not.toContain("\n at "); + }); + it("prints help without checking provider credentials", () => { const result = runBenchModel(["--help"]);