Files
2026-05-27 23:29:53 +01:00

54 lines
1.8 KiB
TypeScript

import { readdirSync, readFileSync, statSync } from "node:fs";
import { join } from "node:path";
import { describe, expect, it } from "@suaveplan/testing/runner";
describe("dep-graph", () => {
it("runtime deps are exactly the expected set (sorted)", {
timeout: 5000,
}, () => {
const pkg = JSON.parse(
readFileSync(join(__dirname, "..", "package.json"), "utf8")
) as { dependencies?: Record<string, string> };
const runtime = Object.keys(pkg.dependencies ?? {}).sort();
expect(runtime).toEqual([
"@opentelemetry/api",
"@suaveplan/api-secrets",
"@suaveplan/api-types",
"@suaveplan/error",
"tslib",
"zod",
]);
});
it("zero peerDependencies", { timeout: 5000 }, () => {
const pkg = JSON.parse(
readFileSync(join(__dirname, "..", "package.json"), "utf8")
) as { peerDependencies?: Record<string, string> };
expect(Object.keys(pkg.peerDependencies ?? {})).toEqual([]);
});
});
describe("zod-import-form", () => {
it("every src file uses default-import z", { timeout: 5000 }, () => {
function* walk(dir: string): Generator<string> {
for (const entry of readdirSync(dir)) {
const p = join(dir, entry);
if (statSync(p).isDirectory()) {
yield* walk(p);
} else if (p.endsWith(".ts")) {
yield p;
}
}
}
const srcDir = join(__dirname, "..", "src");
const bad: string[] = [];
for (const file of walk(srcDir)) {
const src = readFileSync(file, "utf8");
if (/import\s*\{\s*z\s*\}\s*from\s*["']zod["']/.test(src)) {
bad.push(file);
}
}
expect(bad).toEqual([]);
});
});