testRunsPackAndUnpack

tcmts.cli.suites.testRunsPackAndUnpack · #ya6nxkii · term

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"]));
}

uses