mirror of
https://github.com/alkimake/paperclip.git
synced 2026-06-14 01:50:39 +09:00
58 lines
1.6 KiB
TypeScript
58 lines
1.6 KiB
TypeScript
|
|
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);
|
||
|
|
});
|
||
|
|
});
|