Ctrl K
ComunidadGuías…

scripts/check-presence-assertions/run.ts

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
/**
 * IO shell for the presence-assertion check: scans the test tree and holds
 * every test file to its recorded `toBeDefined()` count (see "Test Quality
 * Standards" in AGENTS.md). Kept thin so the logic stays testable.
 */

import {
  type Counts,
  countsByPath,
  registryCheck,
} from "#scripts/check-runner.ts";
import { collectFiles } from "#scripts/walk-files.ts";
import { findIssues, presenceFindings } from "./rules.ts";

const TEST_FILE_PATTERN = /\.(?:test|spec)\.tsx?$/;
const REGISTRY = "scripts/check-presence-assertions/registry.json";

const collectTestFiles = (root: string): Promise<string[]> =>
  collectFiles(root, (path) => TEST_FILE_PATTERN.test(path));

/** Every test file's count, files without a finding left out, so a cleared
 * file drops its registry entry on the next `--update`. */
export const filesWithPresence = async (): Promise<Counts> => {
  const files = await collectTestFiles("test");
  const perFile = await Promise.all(
    files.map(async (file) =>
      presenceFindings(file, await Deno.readTextFile(file)),
    ),
  );
  return countsByPath(perFile.flat());
};

/** Check every test file for `toBeDefined()` calls past its recorded count. */
export const runPresenceCheck = registryCheck(
  collectTestFiles,
  findIssues,
  REGISTRY,
  {
    guide: '"Test Quality Standards" in AGENTS.md',
    noun: "presence-only assertion",
    success:
      "No test file holds more presence-only assertions than its recorded count.",
  },
);