mirror of
https://github.com/paperclipai/paperclip.git
synced 2026-10-24 18:19:05 +02:00
32 lines
1.6 KiB
TypeScript
32 lines
1.6 KiB
TypeScript
import { mkdtemp, mkdir, readFile, rm, writeFile } from "node:fs/promises";
|
|
import os from "node:os";
|
|
import path from "node:path";
|
|
import { afterEach, expect, it } from "vitest";
|
|
import { prepareSourceServerDependencies } from "./source-startup.js";
|
|
|
|
const roots: string[] = [];
|
|
afterEach(async () => { await Promise.all(roots.splice(0).map(root => rm(root, { recursive: true, force: true }))); });
|
|
async function fixture(source: string) {
|
|
const root = await mkdtemp(path.join(os.tmpdir(), "paperclip-source-startup-")); roots.push(root);
|
|
await mkdir(path.join(root, "scripts"));
|
|
await writeFile(path.join(root, "scripts/ensure-plugin-build-deps.mjs"), source);
|
|
return root;
|
|
}
|
|
|
|
it("prepares missing source dependencies before the entry can import them", async () => {
|
|
const root = await fixture(`import {writeFileSync} from 'node:fs'; writeFileSync('dependency.mjs', 'export default 42');`);
|
|
await expect(readFile(path.join(root, "dependency.mjs"))).rejects.toThrow();
|
|
await prepareSourceServerDependencies(root, {}, false);
|
|
expect(await readFile(path.join(root, "dependency.mjs"), "utf8")).toBe("export default 42");
|
|
});
|
|
|
|
it("fails before server admission when dependency preparation fails", async () => {
|
|
const root = await fixture("process.exit(7)");
|
|
await expect(prepareSourceServerDependencies(root, {}, false)).rejects.toMatchObject({ code: 7 });
|
|
});
|
|
|
|
it("does not execute checkout helpers for an installed package", async () => {
|
|
const root = await fixture("throw new Error('must not execute checkout code')");
|
|
await expect(prepareSourceServerDependencies(root, {}, true)).resolves.toBeUndefined();
|
|
});
|