test.build/core/loaders/manifest.loader.test.ts
test.build/core/loaders/manifest.loader.test.ts is a file in Codebase Testing. 31 lines of code and 0 definitions.
import { describe, expect, it } from "vitest";
import { mkdirSync, mkdtempSync, rmSync } from "node:fs";
import { principlesOf, selfGovernedPathOf } from "@banes-lab/build-scripts/core/loaders/manifest.loader.ts";
import { join } from "node:path";
import { tmpdir } from "node:os";
import { writeVerbatim } from "@govlab/canonical-write";
describe("principlesOf", () => {
it("reads a manifest's declared principles and drops an entry that is not a name", () => {
const folder = mkdtempSync(join(tmpdir(), "manifest-"));
writeVerbatim(join(folder, "manifest.json"), JSON.stringify({ governance: { principles: ["fail-fast", 3] } }));
const principles = principlesOf(folder, "manifest.json");
rmSync(folder, { force: true, recursive: true });
expect(principles).toStrictEqual(["fail-fast"]);
});
});
describe("selfGovernedPathOf", () => {
it("reads the path a module's manifest declares it governs itself through, and nothing for a module with none", () => {
const folder = mkdtempSync(join(tmpdir(), "manifest-"));
const declared = join(folder, "declared");
mkdirSync(declared);
writeVerbatim(
join(declared, "_manifest.json"),
JSON.stringify({ selfGoverned: { paths: "kit/own.config.ts" } }),
);
const found = selfGovernedPathOf(declared);
const absent = selfGovernedPathOf(folder);
rmSync(folder, { force: true, recursive: true });
expect(found).toBe("kit/own.config.ts");
expect(absent).toBeNull();
});
});