From 3bae0d6b8201457def39a513a4c9bc2874cc27a0 Mon Sep 17 00:00:00 2001 From: Vincent Koc Date: Sun, 21 Jun 2026 22:40:32 +0200 Subject: [PATCH] fix(qa): reject short flag gateway smoke values --- scripts/dev/gateway-smoke.ts | 2 +- .../qa-lab/runtime/gateway-smoke.e2e.test.ts | 20 +++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/scripts/dev/gateway-smoke.ts b/scripts/dev/gateway-smoke.ts index c15f78df8fef..ab61d0e1ae1f 100644 --- a/scripts/dev/gateway-smoke.ts +++ b/scripts/dev/gateway-smoke.ts @@ -56,7 +56,7 @@ function validateArgs(argv: readonly string[]): void { } if (VALUE_FLAGS.has(arg)) { const value = argv[index + 1]; - if (!value || value.startsWith("--")) { + if (!value || value.startsWith("-")) { throw new GatewaySmokeArgError(`${arg} requires a value`); } index += 1; diff --git a/test/e2e/qa-lab/runtime/gateway-smoke.e2e.test.ts b/test/e2e/qa-lab/runtime/gateway-smoke.e2e.test.ts index 9cdc06c351ac..56acfd2dff78 100644 --- a/test/e2e/qa-lab/runtime/gateway-smoke.e2e.test.ts +++ b/test/e2e/qa-lab/runtime/gateway-smoke.e2e.test.ts @@ -203,6 +203,26 @@ describe("gateway-smoke", () => { expect(result.stderr.trim()).toBe("Unknown argument: --wat"); }); + it("rejects option-looking CLI values before connecting", () => { + for (const [flag, args] of [ + ["--url", ["--url", "-h", "--token", "token"]], + ["--token", ["--url", "ws://127.0.0.1:9", "--token", "-h"]], + ] as const) { + const result = spawnSync( + process.execPath, + ["--import", "tsx", "scripts/dev/gateway-smoke.ts", ...args], + { + cwd: process.cwd(), + encoding: "utf8", + }, + ); + + expect(result.status).toBe(1); + expect(result.stdout).toBe(""); + expect(result.stderr.trim()).toBe(`${flag} requires a value`); + } + }); + it("passes against a loopback gateway websocket using the real client", async () => { const stdout: string[] = []; const stderr: string[] = [];