plugin-inspector/test/release-plan.test.js
2026-04-27 21:51:04 -07:00

58 lines
1.6 KiB
JavaScript

import assert from "node:assert/strict";
import { test } from "node:test";
import { buildReleasePlan } from "../scripts/release-plan.mjs";
const changelog = [
"# Changelog",
"",
"## Unreleased",
"",
"### Changed",
"",
"- Tighten package contents.",
"",
"## 0.3.0 - 2026-04-27",
"",
].join("\n");
test("release plan infers the next patch version", () => {
const plan = buildReleasePlan({
packageVersion: "0.3.0",
changelogText: changelog,
releaseDate: "2026-04-28",
releaseRef: "abc123",
});
assert.equal(plan.status, "pass");
assert.equal(plan.nextVersion, "0.3.1");
assert.equal(plan.tagName, "v0.3.1");
assert.equal(plan.changelogHeading, "## 0.3.1 - 2026-04-28");
assert.equal(plan.crabpotSourceRef, "abc123");
assert.equal(plan.crabpotPackagePin, "@openclaw/plugin-inspector@0.3.1");
});
test("release plan rejects non-advancing versions", () => {
const plan = buildReleasePlan({
packageVersion: "0.3.0",
nextVersion: "0.3.0",
changelogText: changelog,
releaseDate: "2026-04-28",
releaseRef: "abc123",
});
assert.equal(plan.status, "fail");
assert.equal(plan.checks.find((check) => check.id === "version-advance").status, "fail");
});
test("release plan requires unreleased changelog bullets", () => {
const plan = buildReleasePlan({
packageVersion: "0.3.0",
changelogText: "# Changelog\n\n## Unreleased\n",
releaseDate: "2026-04-28",
releaseRef: "abc123",
});
assert.equal(plan.status, "fail");
assert.equal(plan.checks.find((check) => check.id === "changelog-unreleased").status, "fail");
});