testBriefOutputKeepsFailuresAndCounts

tcmts.cli.mcp.testBriefOutputKeepsFailuresAndCounts · #3mlk4nzw · term

import { briefOutput } from "#codebase/tcmts/cli/mcp";
import assert from "node:assert/strict";

export const testBriefOutputKeepsFailuresAndCounts = () => {
  const out = [
    "  ✓ lib.testA  (cached)",
    "  ✗ lib.testB  3ms",
    "      AssertionError: 1 !== 2",
    "  ✓ lib.testC  1ms",
    "",
    "2 passed, 1 failed (1 cached)",
    "",
    "suites (running tcm)",
    "  ✓ lib.e2e.testD  (cached)",
    "  ✓ lib.e2e.testE  (cached)",
    "  ✓ lib.e2e.merge.testF  20ms",
    "",
    "suites: 3 passed, 0 failed (2 cached)",
  ].join("\n");
  // what ran is named; what's cached too where something failed, else counted
  assert.equal(
    briefOutput(["test"], out),
    "✗ lib.testB  3ms\n      AssertionError: 1 !== 2\n\nran: lib.testC\ncached: lib.testA\n2 passed, 1 failed (1 cached)\n\nsuites (running tcm)\n\nran: lib.e2e.merge.testF\nsuites: 3 passed, 0 failed (2 cached)",
  );
  // tests named: the cached ones are named too, under the namespace they share
  assert.equal(
    briefOutput(["test", "lib.e2e", "--fresh"], out.split("\n").slice(7).join("\n")),
    "suites (running tcm)\n\nran: lib.e2e.merge.testF\ncached under lib.e2e: testD, testE\nsuites: 3 passed, 0 failed (2 cached)",
  );
  // a flag's value isn't a name
  assert.equal(
    briefOutput(
      ["test", "--bin", "tcm=x.js"],
      "  ✓ lib.testA  (cached)\n\n1 passed, 0 failed (1 cached)",
    ),
    "1 passed, 0 failed (1 cached)",
  );
  assert.equal(briefOutput(["view"], out), out);
  // a merge's changes by name and count
  assert.equal(
    briefOutput(
      ["merge", "feature"],
      "merged feature into main\n\n  edited\n    ~ lib.f  #aaaaaaaa → #bbbbbbbb\n      - 1\n      + 2\n\n  merged cleanly",
    ),
    "merged feature into main\n  edited: lib.f\n  merged cleanly",
  );
}

uses