49 lines
1.7 KiB
TypeScript
49 lines
1.7 KiB
TypeScript
/**
|
|
* Verify that the runtime dependencies declared in package.json match those
|
|
* actually imported in the source tree — no undeclared deps, no phantom deps.
|
|
*/
|
|
import { readFileSync } from "node:fs";
|
|
import { join } from "node:path";
|
|
import { describe, expect, it } from "@suaveplan/testing/runner";
|
|
|
|
const PKG_ROOT = join(import.meta.dirname, "..");
|
|
const pkg = JSON.parse(
|
|
readFileSync(join(PKG_ROOT, "package.json"), "utf-8")
|
|
) as {
|
|
dependencies: Record<string, string>;
|
|
devDependencies: Record<string, string>;
|
|
};
|
|
|
|
describe("dep-graph", () => {
|
|
it("has @suaveplan/error as a runtime dep", { timeout: 5000 }, () => {
|
|
expect(pkg.dependencies["@suaveplan/error"]).toBeDefined();
|
|
});
|
|
|
|
it("has @suaveplan/types as a runtime dep", { timeout: 5000 }, () => {
|
|
expect(pkg.dependencies["@suaveplan/types"]).toBeDefined();
|
|
});
|
|
|
|
it("has zod as a runtime dep", { timeout: 5000 }, () => {
|
|
expect(pkg.dependencies["zod"]).toBeDefined();
|
|
});
|
|
|
|
it("has tslib as a runtime dep", { timeout: 5000 }, () => {
|
|
expect(pkg.dependencies["tslib"]).toBeDefined();
|
|
});
|
|
|
|
it("has vitest as a devDep only", { timeout: 5000 }, () => {
|
|
expect(pkg.devDependencies["vitest"]).toBeDefined();
|
|
expect(pkg.dependencies["vitest"]).toBeUndefined();
|
|
});
|
|
|
|
it("has fast-check as a devDep only", { timeout: 5000 }, () => {
|
|
expect(pkg.devDependencies["fast-check"]).toBeDefined();
|
|
expect(pkg.dependencies["fast-check"]).toBeUndefined();
|
|
});
|
|
|
|
it("has mitata as a devDep only", { timeout: 5000 }, () => {
|
|
expect(pkg.devDependencies["mitata"]).toBeDefined();
|
|
expect(pkg.dependencies["mitata"]).toBeUndefined();
|
|
});
|
|
});
|