import { readdirSync, readFileSync, statSync } from "node:fs"; import { join } from "node:path"; import { describe, expect, it } from "@suaveplan/testing/runner"; function walk(dir: string, out: string[] = []): string[] { for (const name of readdirSync(dir)) { const full = join(dir, name); const s = statSync(full); if (s.isDirectory()) { walk(full, out); } else if ( s.isFile() && (full.endsWith(".ts") || full.endsWith(".tsx")) ) { out.push(full); } } return out; } describe("zod import form", () => { it("every src file uses default-import z", { timeout: 5000 }, () => { const root = join(__dirname, "..", "src"); const offenders: string[] = []; for (const file of walk(root)) { const text = readFileSync(file, "utf8"); // Forbid `import { z } from "zod"` and `import { z, ... } from "zod"`. if ( /import\s*\{[^}]*\bz\b[^}]*\}\s*from\s*["']zod["']/.test(text) ) { offenders.push(file); } } expect(offenders).toEqual([]); }); });