Files
ThothII/backend/test/workspaces/evidence/boundary.test.ts
T

35 lines
1.2 KiB
TypeScript

import { readdirSync, readFileSync } from "node:fs";
import { basename, join } from "node:path";
import { fileURLToPath } from "node:url";
import ts from "typescript";
import { expect, test } from "vitest";
const evidenceRoot = fileURLToPath(new URL("../../../src/workspaces/evidence/", import.meta.url));
const coreInfrastructure = new Set([
"preprocessing-service",
"qdrant-collection",
"registry",
]);
test("Evidence modules do not import core-owned registry or Qdrant lifecycle", () => {
const violations: Array<{ file: string; dependency: string }> = [];
for (const file of readdirSync(evidenceRoot).filter((name) => name.endsWith(".ts"))) {
const source = ts.createSourceFile(
file,
readFileSync(join(evidenceRoot, file), "utf8"),
ts.ScriptTarget.Latest,
true,
ts.ScriptKind.TS,
);
for (const statement of source.statements) {
if (!ts.isImportDeclaration(statement) || !ts.isStringLiteral(statement.moduleSpecifier)) {
continue;
}
const dependency = basename(statement.moduleSpecifier.text).replace(/\.js$/, "");
if (coreInfrastructure.has(dependency)) violations.push({ file, dependency });
}
}
expect(violations).toEqual([]);
});