76 lines
2.6 KiB
JavaScript
76 lines
2.6 KiB
JavaScript
import assert from "node:assert/strict";
|
|
import test from "node:test";
|
|
|
|
import { buildWp706PrefreezeReport } from "../../scripts/lib/wp7-06-prefreeze.mjs";
|
|
|
|
const expectedTrace = {
|
|
errors: [],
|
|
status: "passed",
|
|
summary: {
|
|
acceptanceCriteria: 52,
|
|
errorCategories: 9,
|
|
featureModules: 13,
|
|
parentFamilies: 89,
|
|
penProductFrames: 18,
|
|
productContracts: 19,
|
|
requirements: 109,
|
|
tasks: 52,
|
|
testCases: 117,
|
|
uiPages: 22,
|
|
},
|
|
};
|
|
|
|
const upstream = {
|
|
"TASK-WP7-01": { branch: "codex/wp7-01", head: "1".repeat(40), merged: true, status: "passed" },
|
|
"TASK-WP7-02": { branch: "codex/wp7-02", head: "2".repeat(40), merged: true, status: "passed" },
|
|
"TASK-WP7-03": { branch: "codex/wp7-03", head: "3".repeat(40), merged: true, status: "deferred_nonblocking_first_version" },
|
|
"TASK-WP7-04": { branch: "codex/wp7-04", head: "4".repeat(40), merged: true, status: "deferred_nonblocking_first_version" },
|
|
"TASK-WP7-05": { branch: "codex/wp7-05", head: "5".repeat(40), merged: true, status: "passed" },
|
|
};
|
|
|
|
test("builds the exact WP7-06 pre-freeze closure without pretending deferred suppliers passed", () => {
|
|
const report = buildWp706PrefreezeReport({
|
|
currentCommit: "a".repeat(40),
|
|
releaseExists: false,
|
|
trace: expectedTrace,
|
|
upstream,
|
|
});
|
|
|
|
assert.equal(report.status, "passed");
|
|
assert.equal(report.release_json_written, false);
|
|
assert.deepEqual(report.trace_summary, expectedTrace.summary);
|
|
assert.deepEqual(report.deferred_external_tasks, ["TASK-WP7-03", "TASK-WP7-04"]);
|
|
});
|
|
|
|
test("rejects missing lineage and premature RELEASE.json", () => {
|
|
assert.throws(() => buildWp706PrefreezeReport({
|
|
currentCommit: "a".repeat(40),
|
|
releaseExists: false,
|
|
trace: expectedTrace,
|
|
upstream: { ...upstream, "TASK-WP7-05": { ...upstream["TASK-WP7-05"], merged: false } },
|
|
}), /WP7_06_UPSTREAM_NOT_MERGED:TASK-WP7-05/);
|
|
|
|
assert.throws(() => buildWp706PrefreezeReport({
|
|
currentCommit: "a".repeat(40),
|
|
releaseExists: true,
|
|
trace: expectedTrace,
|
|
upstream,
|
|
}), /WP7_06_RELEASE_WRITTEN_PREMATURELY/);
|
|
});
|
|
|
|
test("rejects trace drift and unsupported upstream statuses", () => {
|
|
assert.throws(() => buildWp706PrefreezeReport({
|
|
currentCommit: "a".repeat(40),
|
|
releaseExists: false,
|
|
trace: { ...expectedTrace, summary: { ...expectedTrace.summary, testCases: 116 } },
|
|
upstream,
|
|
}), /WP7_06_TRACE_COUNT_MISMATCH:testCases/);
|
|
|
|
assert.throws(() => buildWp706PrefreezeReport({
|
|
currentCommit: "a".repeat(40),
|
|
releaseExists: false,
|
|
trace: expectedTrace,
|
|
upstream: { ...upstream, "TASK-WP7-03": { ...upstream["TASK-WP7-03"], status: "passed" } },
|
|
}), /WP7_06_UNSUPPORTED_STATUS:TASK-WP7-03/);
|
|
});
|