mirror of
https://github.com/AmruthPillai/Reactive-Resume.git
synced 2026-10-03 18:23:47 +10:00
53 lines
1.8 KiB
TypeScript
53 lines
1.8 KiB
TypeScript
import { spawnSync } from "node:child_process";
|
|
import { mkdtempSync, rmSync, writeFileSync } from "node:fs";
|
|
import { tmpdir } from "node:os";
|
|
import { join } from "node:path";
|
|
import { fileURLToPath } from "node:url";
|
|
import { expect, it } from "vitest";
|
|
|
|
it("blocks private workspace paths in imports, re-exports, and dynamic imports", () => {
|
|
const root = fileURLToPath(new URL("..", import.meta.url));
|
|
const directory = mkdtempSync(join(tmpdir(), "reactive-resume-lint-"));
|
|
try {
|
|
const sources = [
|
|
"@reactive-resume/schema/src/resume/data",
|
|
"../../packages/schema/src/resume/data",
|
|
"packages/schema/resume/data",
|
|
];
|
|
let index = 0;
|
|
for (const source of sources) {
|
|
for (const statement of [
|
|
`import "${source}";`,
|
|
`export { value } from "${source}";`,
|
|
`export * from "${source}";`,
|
|
`export type { Value } from "${source}";`,
|
|
`export const load = () => import("${source}");`,
|
|
]) {
|
|
writeFileSync(join(directory, `${index++}.ts`), statement);
|
|
}
|
|
}
|
|
writeFileSync(
|
|
join(directory, "public.ts"),
|
|
'export { resumeDataSchema } from "@reactive-resume/schema/resume/data";',
|
|
);
|
|
const result = spawnSync(
|
|
process.execPath,
|
|
[
|
|
join(root, "node_modules/oxlint/bin/oxlint"),
|
|
"--config",
|
|
join(root, ".oxlintrc.json"),
|
|
"--format=json",
|
|
directory,
|
|
],
|
|
{ cwd: root, encoding: "utf8" },
|
|
);
|
|
const diagnostics = JSON.parse(result.stdout).diagnostics as { code: string; filename: string }[];
|
|
const restricted = diagnostics.filter((diagnostic) => diagnostic.code === "eslint(no-restricted-imports)");
|
|
expect(result.status).toBe(1);
|
|
expect(new Set(restricted.map((diagnostic) => diagnostic.filename)).size).toBe(index);
|
|
expect(diagnostics.some((diagnostic) => diagnostic.filename.endsWith("public.ts"))).toBe(false);
|
|
} finally {
|
|
rmSync(directory, { recursive: true, force: true });
|
|
}
|
|
});
|