diff --git a/scripts/run-vitest-profile.mjs b/scripts/run-vitest-profile.mjs index ccb64e38b2b..91fc2efdd3f 100644 --- a/scripts/run-vitest-profile.mjs +++ b/scripts/run-vitest-profile.mjs @@ -10,6 +10,14 @@ import { createPnpmRunnerSpawnSpec } from "./pnpm-runner.mjs"; /** * Parses Vitest profiler mode, output directory, and forwarded Vitest args. */ +function readOutputDirValue(argv, index) { + const value = argv[index + 1]; + if (value === undefined || value === "" || value.startsWith("--")) { + throw new Error("Expected --output-dir ."); + } + return value; +} + export function parseArgs(argv) { const args = { mode: "", @@ -28,7 +36,7 @@ export function parseArgs(argv) { break; } if (arg === "--output-dir") { - args.outputDir = argv[i + 1] ?? ""; + args.outputDir = readOutputDirValue(argv, i); i += 1; continue; } diff --git a/test/scripts/run-vitest-profile.test.ts b/test/scripts/run-vitest-profile.test.ts index a1706e6d369..b399c97943f 100644 --- a/test/scripts/run-vitest-profile.test.ts +++ b/test/scripts/run-vitest-profile.test.ts @@ -89,6 +89,13 @@ describe("scripts/run-vitest-profile", () => { }); }); + it("rejects missing profile output directories", () => { + expect(() => parseArgs(["runner", "--output-dir"])).toThrow("Expected --output-dir ."); + expect(() => parseArgs(["runner", "--output-dir", "--", "--config", "custom.ts"])).toThrow( + "Expected --output-dir .", + ); + }); + it("passes vitest args after a separator", () => { expect(parseArgs(["main", "--output-dir", "/tmp/out", "--", "--config", "custom.ts"])).toEqual({ mode: "main",