From bde5be874ae80e37e6a52d85ae2bb4d16f09bf73 Mon Sep 17 00:00:00 2001 From: Vincent Koc Date: Tue, 23 Jun 2026 16:41:01 +0200 Subject: [PATCH] fix(qa): reject duplicate sqlite bench controls --- scripts/bench-sqlite-state.ts | 5 +++++ test/scripts/bench-sqlite-state.test.ts | 8 ++++++++ 2 files changed, 13 insertions(+) diff --git a/scripts/bench-sqlite-state.ts b/scripts/bench-sqlite-state.ts index 94bbdaeaa0f..4f2a51b5aff 100644 --- a/scripts/bench-sqlite-state.ts +++ b/scripts/bench-sqlite-state.ts @@ -134,12 +134,17 @@ function hasFlag(flag: string, argv = process.argv.slice(2)): boolean { } function validateArgs(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 CliUsageError(`${arg} was provided more than once`); + } + seenValueFlags.add(arg); const value = argv[index + 1]; if (!value || value.startsWith("-")) { throw new CliUsageError(`${arg} requires a value`); diff --git a/test/scripts/bench-sqlite-state.test.ts b/test/scripts/bench-sqlite-state.test.ts index c0fd6e9e1d1..5d1c38838ee 100644 --- a/test/scripts/bench-sqlite-state.test.ts +++ b/test/scripts/bench-sqlite-state.test.ts @@ -47,4 +47,12 @@ describe("scripts/bench-sqlite-state", () => { 'error: --profile must be one of smoke, default, large; got "huge"', ); }); + + it("rejects duplicate single-value controls before seeding benchmark databases", () => { + const result = runBench(["--profile", "smoke", "--profile", "large"]); + + expect(result.status).toBe(2); + expect(result.stdout).toBe(""); + expect(result.stderr.trim()).toBe("error: --profile was provided more than once"); + }); });