mirror of
https://github.com/moltbot/moltbot.git
synced 2026-04-26 16:06:16 +00:00
68 lines
2.3 KiB
TypeScript
68 lines
2.3 KiB
TypeScript
import fs from "node:fs";
|
|
import os from "node:os";
|
|
import path from "node:path";
|
|
import { describe, expect, it } from "vitest";
|
|
import { scanBundledPluginRuntimeDeps } from "./doctor-bundled-plugin-runtime-deps.js";
|
|
|
|
function writeJson(filePath: string, value: unknown) {
|
|
fs.mkdirSync(path.dirname(filePath), { recursive: true });
|
|
fs.writeFileSync(filePath, `${JSON.stringify(value, null, 2)}\n`, "utf8");
|
|
}
|
|
|
|
describe("doctor bundled plugin runtime deps", () => {
|
|
it("skips source checkouts", () => {
|
|
const root = fs.mkdtempSync(path.join(os.tmpdir(), "openclaw-doctor-bundled-"));
|
|
fs.mkdirSync(path.join(root, ".git"));
|
|
fs.mkdirSync(path.join(root, "src"));
|
|
fs.mkdirSync(path.join(root, "extensions"));
|
|
writeJson(path.join(root, "dist", "extensions", "discord", "package.json"), {
|
|
dependencies: {
|
|
"dep-one": "1.0.0",
|
|
},
|
|
});
|
|
|
|
const result = scanBundledPluginRuntimeDeps({ packageRoot: root });
|
|
expect(result.missing).toEqual([]);
|
|
expect(result.conflicts).toEqual([]);
|
|
});
|
|
|
|
it("reports missing deps and conflicts", () => {
|
|
const root = fs.mkdtempSync(path.join(os.tmpdir(), "openclaw-doctor-bundled-"));
|
|
writeJson(path.join(root, "package.json"), { name: "openclaw" });
|
|
|
|
writeJson(path.join(root, "dist", "extensions", "alpha", "package.json"), {
|
|
dependencies: {
|
|
"dep-one": "1.0.0",
|
|
"@scope/dep-two": "2.0.0",
|
|
},
|
|
optionalDependencies: {
|
|
"dep-opt": "3.0.0",
|
|
},
|
|
});
|
|
writeJson(path.join(root, "dist", "extensions", "beta", "package.json"), {
|
|
dependencies: {
|
|
"dep-one": "1.0.0",
|
|
"dep-conflict": "1.0.0",
|
|
},
|
|
});
|
|
writeJson(path.join(root, "dist", "extensions", "gamma", "package.json"), {
|
|
dependencies: {
|
|
"dep-conflict": "2.0.0",
|
|
},
|
|
});
|
|
|
|
writeJson(path.join(root, "node_modules", "dep-one", "package.json"), {
|
|
name: "dep-one",
|
|
version: "1.0.0",
|
|
});
|
|
|
|
const result = scanBundledPluginRuntimeDeps({ packageRoot: root });
|
|
const missing = result.missing.map((dep) => `${dep.name}@${dep.version}`);
|
|
|
|
expect(missing).toEqual(["@scope/dep-two@2.0.0", "dep-opt@3.0.0"]);
|
|
expect(result.conflicts).toHaveLength(1);
|
|
expect(result.conflicts[0]?.name).toBe("dep-conflict");
|
|
expect(result.conflicts[0]?.versions).toEqual(["1.0.0", "2.0.0"]);
|
|
});
|
|
});
|