Files
Kilo-Org_kilocode/script/kilocode/release-notes.test.ts
2026-06-15 13:22:43 +02:00

58 lines
2.1 KiB
TypeScript

import { expect, test } from "bun:test"
import { buildNotes } from "./release-notes"
const section = (version: string, body: string) => `## ${version}\n\n${body}\n`
const release = (tagName: string, isPrerelease = false, isDraft = false) => ({ tagName, isPrerelease, isDraft })
test("prerelease notes contain only their own section", () => {
const changelog = section("1.2.3", "current prerelease") + section("1.2.2", "previous prerelease")
const notes = buildNotes({
version: "1.2.3",
prerelease: true,
releases: [release("v1.2.2", true)],
changelog,
})
expect(notes).toBe("current prerelease")
})
test("stable notes contain only published prereleases since the previous stable", () => {
const changelog = [
section("1.2.6", "final"),
section("1.2.5", "published prerelease"),
section("1.2.4", "draft prerelease"),
section("1.2.3", "unpublished section"),
section("1.2.1", "previous stable"),
section("1.2.0", "older prerelease"),
].join("\n")
const notes = buildNotes({
version: "1.2.6",
prerelease: false,
releases: [release("v1.2.5", true), release("v1.2.4", true, true), release("v1.2.1"), release("v1.2.0", true)],
changelog,
})
expect(notes).toBe("## 1.2.6\n\nfinal\n\n## 1.2.5\n\npublished prerelease")
})
test("stable notes include prereleases when the current section is empty", () => {
const notes = buildNotes({
version: "1.2.3",
prerelease: false,
releases: [release("v1.2.2", true), release("v1.2.1")],
changelog: section("1.2.3", "") + section("1.2.2", "prerelease") + section("1.2.1", "stable"),
})
expect(notes).toBe("## 1.2.2\n\nprerelease")
})
test("missing and empty prerelease sections use the fallback", () => {
expect(buildNotes({ version: "2.0.0", prerelease: true, releases: [], changelog: "" })).toBe("No notable changes")
expect(buildNotes({ version: "2.0.0", prerelease: true, releases: [], changelog: section("2.0.0", "") })).toBe(
"No notable changes",
)
expect(buildNotes({ version: "2.0.0", prerelease: false, releases: [release("v1.9.0", true)], changelog: "" })).toBe(
"No notable changes",
)
})