import { afterAll, afterEach, describe, expect, it, vi } from "vitest"; import { mkdtempSync, rmSync } from "node:fs"; import { DocChecks } from "@govlab/docs/core/coordinators/document.coordinator.ts"; import type { ModuleDocs } from "@govlab/docs/types/readme.types.ts"; import type { Spec } from "@govlab/docs/types/document.output.types.ts"; import { captureOutput } from "./output.fixture.ts"; import { join } from "node:path"; import { tmpdir } from "node:os"; import { writeVerbatim } from "@govlab/canonical-write"; const dir = mkdtempSync(join(tmpdir(), "doc-checks-")); const SPEC_PATH = join(dir, "README.md"); writeVerbatim( join(dir, "_manifest.json"), JSON.stringify({ docs: {}, label: "m", maturity: "stable", visibility: {} }), ); const NO_DOCS = mkdtempSync(join(tmpdir(), "doc-checks-bare-")); writeVerbatim(join(NO_DOCS, "_manifest.json"), JSON.stringify({ label: "m" })); const ENGINE: ModuleDocs = { declaredDocLocation: () => "x.md", generateReadme: () => "", governConcepts: () => [], governDeclaredDocs: () => [], governManifest: () => [], governPrinciples: () => [], ontologyDuplicates: () => ["dup-principle"], renderDeclaredDoc: () => "", }; const written: string[] = []; const SPEC: Spec = { driftCode: "readme-drift", label: "m/README.md", normalize: (text) => text, path: SPEC_PATH, produce: () => "body", }; const checks = new DocChecks({ discoverAll: () => [], engine: ENGINE, generatedPrefix: "