54 lines
1.8 KiB
TypeScript
54 lines
1.8 KiB
TypeScript
/**
|
|
* Verify that the runtime dependencies declared in package.json match those
|
|
* actually required by 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 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 @opentelemetry/api as a runtime dep", { timeout: 5000 }, () => {
|
|
expect(pkg.dependencies["@opentelemetry/api"]).toBeDefined();
|
|
});
|
|
|
|
it("does NOT have @suaveplan/error as a runtime dep (leaf package)", {
|
|
timeout: 5000,
|
|
}, () => {
|
|
expect(pkg.dependencies["@suaveplan/error"]).toBeUndefined();
|
|
});
|
|
|
|
it("does NOT have @suaveplan/types as a runtime dep (leaf package)", {
|
|
timeout: 5000,
|
|
}, () => {
|
|
expect(pkg.dependencies["@suaveplan/types"]).toBeUndefined();
|
|
});
|
|
|
|
it("has vitest as a devDep only", { timeout: 5000 }, () => {
|
|
expect(pkg.devDependencies["vitest"]).toBeDefined();
|
|
expect(pkg.dependencies["vitest"]).toBeUndefined();
|
|
});
|
|
|
|
it("has @vitest/coverage-istanbul as a devDep only", {
|
|
timeout: 5000,
|
|
}, () => {
|
|
expect(pkg.devDependencies["@vitest/coverage-istanbul"]).toBeDefined();
|
|
expect(pkg.dependencies["@vitest/coverage-istanbul"]).toBeUndefined();
|
|
});
|
|
});
|