diff --git a/scripts/validate-cli-package.test.ts b/scripts/validate-cli-package.test.ts index 32335916..6bbad548 100644 --- a/scripts/validate-cli-package.test.ts +++ b/scripts/validate-cli-package.test.ts @@ -3,7 +3,10 @@ import { tmpdir } from "node:os"; import { join } from "node:path"; import { create } from "tar"; import { describe, expect, it } from "vitest"; -import { validateCliPackageArchive } from "./validate-cli-package.js"; +import { + parseValidateCliPackageArguments, + validateCliPackageArchive, +} from "./validate-cli-package.js"; interface PackageFixtureOptions { binContent?: string; @@ -43,6 +46,21 @@ const validPackedManifest = { }; describe("validate-cli-package", () => { + it("accepts pnpm's forwarded argument separator", () => { + expect( + parseValidateCliPackageArguments([ + "--", + "--tarball", + "release/cli.tgz", + "--source-package-json", + "packages/cli/package.json", + ]) + ).toEqual({ + sourcePackageJsonPath: "packages/cli/package.json", + tarballPath: "release/cli.tgz", + }); + }); + it("accepts package entry fields that resolve to real archive files", async () => { const fixture = await createPackageFixture(); diff --git a/scripts/validate-cli-package.ts b/scripts/validate-cli-package.ts index caa7312e..68091513 100644 --- a/scripts/validate-cli-package.ts +++ b/scripts/validate-cli-package.ts @@ -268,12 +268,15 @@ function isRecord(value: unknown): value is Record { return typeof value === "object" && value !== null && !Array.isArray(value); } -function parseArguments(argv: string[]): ValidateCliPackageInput { +export function parseValidateCliPackageArguments(argv: string[]): ValidateCliPackageInput { let tarballPath: string | undefined; let sourcePackageJsonPath: string | undefined; for (let index = 0; index < argv.length; index++) { const argument = argv[index]; + if (argument === "--") { + continue; + } if (argument === "--tarball") { tarballPath = argv[++index]; } else if (argument === "--source-package-json") { @@ -291,7 +294,7 @@ function parseArguments(argv: string[]): ValidateCliPackageInput { } if (isDirectExecution(import.meta.url)) { - validateCliPackageArchive(parseArguments(process.argv.slice(2))) + validateCliPackageArchive(parseValidateCliPackageArguments(process.argv.slice(2))) .then((result) => { success( `Validated ${result.name}@${result.version} package entry files: ${result.entryTargets.join(", ")}`