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",