testRetiredBuildsAreKeptAFew
The build a new known-good replaces is kept, named by the entry it was made from, and only the newest few are: one that doesn't say what it was made from goes.
import { keptBuilds, retireBuild } from "#codebase/tcmts/cli/builds"; import { fakeBuild } from "#codebase/tcmts/cli/builds/test"; import assert from "node:assert/strict"; import fs from "node:fs"; import os from "node:os"; import path from "node:path"; export const testRetiredBuildsAreKeptAFew = () => { const root = fs.realpathSync(fs.mkdtempSync(path.join(os.tmpdir(), "tcm builds "))); try { fakeBuild(root, "builds/cccccccc", "cccccccc4444", 30); fakeBuild(root, "builds/dddddddd", "dddddddd5555", 20); const previous = fakeBuild(root, "known-good-previous", "bbbbbbbb3333", 5); assert.equal(retireBuild(root, previous, 2), path.join(root, "builds", "bbbbbbbb")); assert.ok(!fs.existsSync(previous)); assert.deepEqual( keptBuilds(root).map((b) => b.name), ["bbbbbbbb", "dddddddd"], ); // one kept already, or one that doesn't say, goes const again = fakeBuild(root, "known-good-previous", "bbbbbbbb3333", 5); assert.equal(retireBuild(root, again, 2), path.join(root, "builds", "bbbbbbbb")); assert.ok(!fs.existsSync(again)); const unsaid = fakeBuild(root, "known-good-previous", "ffffffff", 1); fs.rmSync(path.join(unsaid, "VERIFIED")); fs.rmSync(path.join(unsaid, "verified.json")); assert.equal(retireBuild(root, unsaid, 2), undefined); assert.ok(!fs.existsSync(unsaid)); assert.equal(retireBuild(root, path.join(root, "nothing"), 2), undefined); } finally { fs.rmSync(root, { recursive: true, force: true }); } }