diff --git a/scripts/test-extension-batch.mjs b/scripts/test-extension-batch.mjs index 5e35d7415b0..1615fea3cc0 100644 --- a/scripts/test-extension-batch.mjs +++ b/scripts/test-extension-batch.mjs @@ -22,9 +22,11 @@ function printUsage() { } export function parseExtensionIds(rawArgs) { - const separatorIndex = rawArgs.indexOf("--"); - const args = separatorIndex >= 0 ? rawArgs.slice(0, separatorIndex) : [...rawArgs]; - const separatorPassthroughArgs = separatorIndex >= 0 ? rawArgs.slice(separatorIndex + 1) : []; + const normalizedArgs = rawArgs[0] === "--" ? rawArgs.slice(1) : rawArgs; + const separatorIndex = normalizedArgs.indexOf("--"); + const args = separatorIndex >= 0 ? normalizedArgs.slice(0, separatorIndex) : [...normalizedArgs]; + const separatorPassthroughArgs = + separatorIndex >= 0 ? normalizedArgs.slice(separatorIndex + 1) : []; const extensionIds = []; while (args[0] && !args[0].startsWith("-")) { diff --git a/test/scripts/test-extension.test.ts b/test/scripts/test-extension.test.ts index 1eea831fef3..8f1de04552a 100644 --- a/test/scripts/test-extension.test.ts +++ b/test/scripts/test-extension.test.ts @@ -718,6 +718,13 @@ describe("scripts/test-extension.mjs", () => { expect([...parseExactVitestExcludePaths(["--exclude=extensions/**/*.test.ts"])]).toEqual([]); }); + it("accepts pnpm's leading argument separator before extension ids", () => { + expect(parseExtensionIds(["--", "telegram,slack", "--run"])).toEqual({ + extensionIds: ["telegram", "slack"], + passthroughArgs: ["--run"], + }); + }); + it("fails explicitly requested extensions without tests by default", () => { const extensionId = findExtensionWithoutTests(); const result = runScriptResult([extensionId]);