import fs from "node:fs"; import os from "node:os"; import path from "node:path"; import { pathToFileURL } from "node:url"; import { afterEach, describe, expect, it } from "vitest"; import { isWorkerEntrypoint } from "../src/worker-rpc-host.js"; describe("isWorkerEntrypoint", () => { const tempRoots: string[] = []; afterEach(() => { for (const tempRoot of tempRoots.splice(0)) { fs.rmSync(tempRoot, { recursive: true, force: true }); } }); function createTempRoot(): string { const tempRoot = fs.mkdtempSync(path.join(os.tmpdir(), "paperclip-sdk-worker-")); tempRoots.push(tempRoot); return tempRoot; } it("matches an entrypoint reached through a symlinked directory", () => { const tempRoot = createTempRoot(); const realDir = path.join(tempRoot, "real"); const linkDir = path.join(tempRoot, "link"); fs.mkdirSync(realDir); fs.symlinkSync(realDir, linkDir, "dir"); const workerPath = path.join(realDir, "worker.js"); fs.writeFileSync(workerPath, ""); expect( isWorkerEntrypoint( path.join(linkDir, "worker.js"), pathToFileURL(workerPath).toString(), ), ).toBe(true); }); it("does not match a different entrypoint", () => { const tempRoot = createTempRoot(); const workerPath = path.join(tempRoot, "worker.js"); const otherPath = path.join(tempRoot, "other.js"); fs.writeFileSync(workerPath, ""); fs.writeFileSync(otherPath, ""); expect( isWorkerEntrypoint( otherPath, pathToFileURL(workerPath).toString(), ), ).toBe(false); }); });