test.coordination/core/validators/gate.validator.test.ts
test.coordination/core/validators/gate.validator.test.ts is a file in Codebase Testing. 99 lines of code and 0 definitions.
import { EXEMPTION_SAMPLED, healerThrew, ruleThrew } from "coordination-surface/tools/core/strings/gate.strings.ts";
import { describe, it } from "vitest";
import { judge, unsuppliedReads } from "coordination-surface/tools/core/validators/gate.validator.ts";
import assert from "node:assert/strict";
import { resolve } from "node:path";
import { writeVerbatim } from "@govlab/canonical-write";
type Declaration = Parameters<typeof judge>[1];
type Result = ReturnType<Declaration["check"]>;
const SAMPLE = "a.md";
const BAD = { path: SAMPLE, text: "bad" };
const GOOD = { path: SAMPLE, text: "good" };
const found = function found(path: string, target = path): Result["findings"][number] {
return {
actual: "bad",
expected: null,
healed: false,
line: 1,
locus: "bad",
path,
remediation: { action: "declare", decide: "", deterministic: false, from: null, target, to: null },
rule: "probe/bad",
stack: [],
};
};
const declaration = function declaration(check: Declaration["check"], reads?: readonly string[]): Declaration {
return {
check,
extensions: [],
heals: true,
invariant: "",
jurisdiction: "all",
kinds: ["bad"],
stage: "content",
...(reads === undefined ? {} : { reads }),
};
};
const firesOnBad = declaration((context) => ({
findings: context.read(SAMPLE).includes("bad") ? [found(SAMPLE)] : [],
healed: [],
}));
const healing = function healing(writes: boolean): Declaration {
return declaration((context, fix) => {
const bad = context.read(SAMPLE).includes("bad");
if (fix && bad && writes) {
writeVerbatim(resolve(context.repoRoot, SAMPLE), "good");
}
return { findings: bad && !fix ? [found(SAMPLE)] : [], healed: fix && bad ? [SAMPLE] : [] };
});
};
describe("unsuppliedReads", () => {
it("names each file a rule declares it reads that no sample supplies, unless the fixture is exempt or on disk", () => {
const reads = declaration(firesOnBad.check, [SAMPLE, "b.md"]);
assert.deepEqual(unsuppliedReads(reads, { fires: [BAD], rule: "probe" }), ["b.md"]);
assert.deepEqual(unsuppliedReads(reads, { exempt: "why", rule: "probe" }), []);
assert.deepEqual(unsuppliedReads(reads, { fires: [BAD], onDisk: true, rule: "probe" }), []);
assert.deepEqual(unsuppliedReads(firesOnBad, { fires: [BAD], rule: "probe" }), []);
});
});
describe("judge", () => {
it("proves a rule that fires on its violating sample and accepts its clean one", () => {
assert.equal(
judge("probe", firesOnBad, "", { fires: [BAD], kind: "bad", passes: [GOOD], rule: "probe" }).state,
"proven",
);
});
it("reads a rule that stays silent on its violation, fires on clean input, throws or aims elsewhere as unproven", () => {
assert.equal(judge("probe", firesOnBad, "", { fires: [GOOD], rule: "probe" }).state, "silent");
assert.equal(judge("probe", firesOnBad, "", { fires: [BAD], passes: [BAD], rule: "probe" }).state, "noisy");
const thrower = declaration(() => {
throw new Error("broke");
});
assert.equal(judge("probe", thrower, "", { fires: [BAD], rule: "probe" }).detail, ruleThrew("Error: broke"));
const astray = declaration(() => ({ findings: [found(SAMPLE, "elsewhere.md")], healed: [] }));
assert.equal(judge("probe", astray, "", { fires: [BAD], rule: "probe" }).state, "noisy");
});
it("keeps an exemption, and refuses one that also carries samples", () => {
assert.deepEqual(judge("probe", firesOnBad, "", { exempt: "reads the host", rule: "probe" }), {
detail: "reads the host",
rule: "probe",
state: "exempt",
});
assert.equal(
judge("probe", firesOnBad, "", { exempt: "x", fires: [BAD], rule: "probe" }).detail,
EXEMPTION_SAMPLED,
);
});
it("proves a healer whose repair survives its own re-check, and names one that heals nothing, fails to converge or throws", () => {
assert.equal(judge("probe", healing(true), "", { heals: [BAD], rule: "probe" }).state, "proven");
assert.equal(judge("probe", firesOnBad, "", { heals: [BAD], rule: "probe" }).state, "silent");
assert.equal(judge("probe", healing(false), "", { heals: [BAD], rule: "probe" }).state, "noisy");
const throwing = declaration(() => {
throw new Error("heal broke");
});
assert.equal(
judge("probe", throwing, "", { heals: [BAD], rule: "probe" }).detail,
healerThrew("Error: heal broke"),
);
});
});