49 lines
2.0 KiB
TypeScript
49 lines
2.0 KiB
TypeScript
import assert from "node:assert/strict";
|
|
import { test } from "node:test";
|
|
import { planHashTagDeletions, selectOrphanedManifests } from "./select-versions.ts";
|
|
|
|
const headSha = "0582809000000000000000000000000000000001";
|
|
const releaseSha = "50006dd000000000000000000000000000000002";
|
|
const staleSha = "c8981c1000000000000000000000000000000003";
|
|
|
|
test("planHashTagDeletions deletes hash tags that are neither a branch head nor release-tagged", () => {
|
|
const plan = planHashTagDeletions({
|
|
branchHeadShas: [headSha],
|
|
releaseTagShas: [releaseSha],
|
|
versions: [headSha, releaseSha, staleSha],
|
|
});
|
|
assert.deepEqual(plan.deletions, [staleSha]);
|
|
assert.deepEqual(plan.keptTags, [headSha, releaseSha]);
|
|
});
|
|
|
|
test("planHashTagDeletions keeps named tags and excludes sha256 manifest versions from keptTags", () => {
|
|
const plan = planHashTagDeletions({
|
|
branchHeadShas: [],
|
|
releaseTagShas: [],
|
|
versions: ["0.0.1", "0", "latest", "some-manual-tag", `sha256:${"a".repeat(64)}`, staleSha],
|
|
});
|
|
assert.deepEqual(plan.deletions, [staleSha]);
|
|
assert.deepEqual(plan.keptTags, ["0.0.1", "0", "latest", "some-manual-tag"]);
|
|
});
|
|
|
|
test("planHashTagDeletions with no versions plans nothing", () => {
|
|
const plan = planHashTagDeletions({ branchHeadShas: [headSha], releaseTagShas: [], versions: [] });
|
|
assert.deepEqual(plan.deletions, []);
|
|
assert.deepEqual(plan.keptTags, []);
|
|
});
|
|
|
|
test("selectOrphanedManifests picks only sha256 versions unreferenced by kept tags", () => {
|
|
const referenced = `sha256:${"b".repeat(64)}`;
|
|
const orphaned = `sha256:${"c".repeat(64)}`;
|
|
const orphans = selectOrphanedManifests({
|
|
referencedDigests: [referenced],
|
|
versions: ["0.0.1", "latest", headSha, referenced, orphaned],
|
|
});
|
|
assert.deepEqual(orphans, [orphaned]);
|
|
});
|
|
|
|
test("selectOrphanedManifests with nothing referenced orphans every sha256 version", () => {
|
|
const manifest = `sha256:${"d".repeat(64)}`;
|
|
assert.deepEqual(selectOrphanedManifests({ referencedDigests: [], versions: [manifest, "latest"] }), [manifest]);
|
|
});
|