testRunsPackAndUnpack
Kept runs are written as they're read, each name a run executed once
import { codeDigest, KEPT_RUN_FORMAT, packRuns, unpackRuns } from "#codebase/tcmts/cli/suites"; import type { SuiteRun } from "#codebase/tcmts/cli/suites"; import assert from "node:assert/strict"; export const testRunsPackAndUnpack = () => { const result = { hash: "t", ok: true, message: "", output: "", ms: 1 }; const format = KEPT_RUN_FORMAT; const runs: Record<string, SuiteRun[]> = { "e2e.testA": [ { of: "a", key: "v24", format, ran: ["lib.main", "lib.parse"], code: "c1", result }, { of: "a", key: "v24", format, ran: ["lib.main", "lib.print"], code: "c2", result }, ], "e2e.testB": [{ of: "b", key: "v24", format, ran: ["lib.parse"], code: "c3", result }], "e2e.testC": [], }; const json = packRuns(runs); assert.deepEqual(JSON.parse(json).names, ["lib.main", "lib.parse", "lib.print"]); assert.deepEqual(unpackRuns(json), { "e2e.testA": runs["e2e.testA"], "e2e.testB": runs["e2e.testB"], }); // runs an earlier tcm recorded (no format, or another): dropped, the others kept const earlier = JSON.parse(json) as { runs: Record<string, Record<string, unknown>[]> }; delete earlier.runs["e2e.testA"]![0]!.format; earlier.runs["e2e.testB"]![0]!.format = 1; assert.deepEqual(unpackRuns(JSON.stringify(earlier)), { "e2e.testA": runs["e2e.testA"]!.slice(1), "e2e.testB": [], }); // runs kept another way, or nothing: nothing to reuse assert.deepEqual( unpackRuns( JSON.stringify({ "e2e.testA": { of: "a", key: "v24", ran: { "lib.main": "x" }, result } }), ), {}, ); assert.deepEqual(unpackRuns(undefined), {}); assert.deepEqual(unpackRuns("not json"), {}); assert.notEqual(codeDigest(["a", "b"]), codeDigest(["ab"])); }