d68f003000
CI / Change detection (push) Has been cancelled
CI / Version drift (push) Has been cancelled
CI / Lint (push) Has been cancelled
CI / Workflow RLM cache (push) Has been cancelled
CI / Test (macos-latest) (push) Has been cancelled
CI / Test (ubuntu-latest) (push) Has been cancelled
CI / Test (windows-latest) (push) Has been cancelled
CI / npm wrapper smoke (push) Has been cancelled
CI / Mobile runtime smoke (push) Has been cancelled
CI / Workflow lint (push) Has been cancelled
CI / Documentation (push) Has been cancelled
Web Frontend / Lint & Type Check (push) Failing after 1s
Auto-close harvested PRs / close (push) Failing after 1s
cargo-deny / cargo-deny (bans licenses sources) (push) Failing after 1s
Security audit / cargo-audit (push) Failing after 1s
Sync to CNB / sync (push) Failing after 1s
cargo-deny / cargo-deny (advisories) (push) Failing after 3s
Web Frontend / Deploy to Cloudflare (push) Has been cancelled
95 lines
3.3 KiB
JavaScript
95 lines
3.3 KiB
JavaScript
const assert = require("node:assert/strict");
|
|
const test = require("node:test");
|
|
|
|
const pkg = require("../package.json");
|
|
const {
|
|
assertPackageVersionMatchesBinaryVersion,
|
|
assertReleaseAssetsFresh,
|
|
parseChecksumManifest,
|
|
} = require("../scripts/verify-release-assets");
|
|
|
|
test("parseChecksumManifest accepts GNU and BSD filename forms", () => {
|
|
const manifest = parseChecksumManifest(
|
|
[
|
|
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa codewhale-linux-x64",
|
|
"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb *codewhale-windows-x64.exe",
|
|
].join("\n"),
|
|
);
|
|
|
|
assert.equal(manifest.get("codewhale-linux-x64"), "a".repeat(64));
|
|
assert.equal(manifest.get("codewhale-windows-x64.exe"), "b".repeat(64));
|
|
});
|
|
|
|
test("parseChecksumManifest rejects malformed checksum rows", () => {
|
|
assert.throws(
|
|
() => parseChecksumManifest("not-a-sha codewhale-linux-x64"),
|
|
/Invalid checksum manifest line/,
|
|
);
|
|
});
|
|
|
|
test("assertReleaseAssetsFresh rejects missing npm-facing assets", () => {
|
|
assert.throws(
|
|
() =>
|
|
assertReleaseAssetsFresh(
|
|
{ assets: [{ name: "codewhale-linux-x64", state: "uploaded", updated_at: "2026-06-26T00:10:00Z" }] },
|
|
["codewhale-linux-x64", "codewhale-artifacts-sha256.txt"],
|
|
{ database_id: 123, created_at: "2026-06-26T00:00:00Z" },
|
|
),
|
|
/missing required npm-facing asset/,
|
|
);
|
|
});
|
|
|
|
test("assertReleaseAssetsFresh rejects assets older than the release workflow run", () => {
|
|
assert.throws(
|
|
() =>
|
|
assertReleaseAssetsFresh(
|
|
{ assets: [{ name: "codewhale-linux-x64", state: "uploaded", updated_at: "2026-06-25T23:59:59Z" }] },
|
|
["codewhale-linux-x64"],
|
|
{ database_id: 123, created_at: "2026-06-26T00:00:00Z" },
|
|
),
|
|
/asset set is stale/,
|
|
);
|
|
});
|
|
|
|
test("assertReleaseAssetsFresh rejects non-uploaded assets", () => {
|
|
assert.throws(
|
|
() =>
|
|
assertReleaseAssetsFresh(
|
|
{ assets: [{ name: "codewhale-linux-x64", state: "new", updated_at: "2026-06-26T00:10:00Z" }] },
|
|
["codewhale-linux-x64"],
|
|
{ database_id: 123, created_at: "2026-06-26T00:00:00Z" },
|
|
),
|
|
/asset set is stale/,
|
|
);
|
|
});
|
|
|
|
test("assertReleaseAssetsFresh accepts assets updated by the release workflow run", () => {
|
|
assert.doesNotThrow(() =>
|
|
assertReleaseAssetsFresh(
|
|
{ assets: [{ name: "codewhale-linux-x64", state: "uploaded", updated_at: "2026-06-26T00:10:00Z" }] },
|
|
["codewhale-linux-x64"],
|
|
{ database_id: 123, created_at: "2026-06-26T00:00:00Z" },
|
|
),
|
|
);
|
|
});
|
|
|
|
test("assertPackageVersionMatchesBinaryVersion allows packaging-only releases only with an explicit override", () => {
|
|
assert.doesNotThrow(() => assertPackageVersionMatchesBinaryVersion(pkg.version));
|
|
assert.throws(
|
|
() => assertPackageVersionMatchesBinaryVersion("0.0.0-packaging-test"),
|
|
/does not match codewhaleBinaryVersion/,
|
|
);
|
|
|
|
const previous = process.env.CODEWHALE_ALLOW_NPM_BINARY_MISMATCH;
|
|
process.env.CODEWHALE_ALLOW_NPM_BINARY_MISMATCH = "1";
|
|
try {
|
|
assert.doesNotThrow(() => assertPackageVersionMatchesBinaryVersion("0.0.0-packaging-test"));
|
|
} finally {
|
|
if (previous === undefined) {
|
|
delete process.env.CODEWHALE_ALLOW_NPM_BINARY_MISMATCH;
|
|
} else {
|
|
process.env.CODEWHALE_ALLOW_NPM_BINARY_MISMATCH = previous;
|
|
}
|
|
}
|
|
});
|