fix(release): reject staged runtime deps in packs

This commit is contained in:
Peter Steinberger
2026-04-26 09:07:53 +01:00
parent 5c0dc93d1e
commit c99d72575e
8 changed files with 302 additions and 3 deletions

View File

@@ -434,10 +434,12 @@ describe("collectForbiddenPackPaths", () => {
expect(
collectForbiddenPackPaths([
"dist/index.js",
"dist/extensions/browser/.OpenClaw-Install-Stage/package.json",
"dist/extensions/codex/.openclaw-runtime-deps-backup-node_modules-old/zod/index.js",
"dist/extensions/discord/.openclaw-runtime-deps-stamp.json",
]),
).toEqual([
"dist/extensions/browser/.OpenClaw-Install-Stage/package.json",
"dist/extensions/codex/.openclaw-runtime-deps-backup-node_modules-old/zod/index.js",
"dist/extensions/discord/.openclaw-runtime-deps-stamp.json",
]);

View File

@@ -35,6 +35,7 @@ import {
shouldUseManagedGatewayForInstallerRuntime,
shouldUseManagedGatewayService,
verifyDevUpdateStatus,
writePackageDistInventoryForCandidate,
} from "../../scripts/openclaw-cross-os-release-checks.ts";
describe("scripts/openclaw-cross-os-release-checks", () => {
@@ -418,6 +419,30 @@ describe("scripts/openclaw-cross-os-release-checks", () => {
}
});
it("rejects bundled runtime-deps staging debris before candidate inventory generation", async () => {
const packageRoot = mkdtempSync(join(tmpdir(), "openclaw-cross-os-stage-debris-"));
try {
mkdirSync(
join(packageRoot, "dist", "Extensions", "demo", ".OpenClaw-Install-Stage", "node_modules"),
{ recursive: true },
);
writeFileSync(
join(packageRoot, "dist", "Extensions", "demo", ".OpenClaw-Install-Stage", "package.json"),
"{}\n",
"utf8",
);
await expect(
writePackageDistInventoryForCandidate({
sourceDir: packageRoot,
logPath: join(packageRoot, "npm-pack-dry-run.log"),
}),
).rejects.toThrow("unexpected bundled-runtime-deps install staging debris");
} finally {
rmSync(packageRoot, { recursive: true, force: true });
}
});
it("accepts a git main dev-channel update status payload", () => {
expect(() =>
verifyDevUpdateStatus(