




















@@ -11,93 +11,101 @@ async function makeFixtureRoot(prefix: string): Promise<string> {
1111describe("runPostUpgradeProbes — plugin.entry_unresolved", () => {
1212it("flags an enabled plugin whose declared entry does not exist on disk", async () => {
1313const root = await makeFixtureRoot("entry-unresolved");
14-const pluginDir = path.join(root, "user-plugins", "ghost");
15-await fs.mkdir(pluginDir, { recursive: true });
16-// Plugin package.json declares ./dist/index.js but no dist/.
17-await fs.writeFile(
18-path.join(pluginDir, "package.json"),
19-JSON.stringify({
20-name: "ghost",
21-version: "0.0.1",
22-type: "module",
23-openclaw: { extensions: ["./dist/index.js"] },
24-}),
25-"utf-8",
26-);
27-await fs.writeFile(
28-path.join(pluginDir, "openclaw.plugin.json"),
29-JSON.stringify({ id: "ghost" }),
30-"utf-8",
31-);
14+try {
15+const pluginDir = path.join(root, "user-plugins", "ghost");
16+await fs.mkdir(pluginDir, { recursive: true });
17+// Plugin package.json declares ./dist/index.js but no dist/.
18+await fs.writeFile(
19+path.join(pluginDir, "package.json"),
20+JSON.stringify({
21+name: "ghost",
22+version: "0.0.1",
23+type: "module",
24+openclaw: { extensions: ["./dist/index.js"] },
25+}),
26+"utf-8",
27+);
28+await fs.writeFile(
29+path.join(pluginDir, "openclaw.plugin.json"),
30+JSON.stringify({ id: "ghost" }),
31+"utf-8",
32+);
323333-const installsPath = path.join(root, "plugins", "installs.json");
34-await fs.mkdir(path.dirname(installsPath), { recursive: true });
35-await fs.writeFile(
36-installsPath,
37-JSON.stringify({
38-version: 1,
39-plugins: [
40-{
41-pluginId: "ghost",
42-manifestPath: path.join(pluginDir, "openclaw.plugin.json"),
43-rootDir: pluginDir,
44-enabled: true,
45-packageJson: { path: "package.json" },
46-},
47-],
48-}),
49-"utf-8",
50-);
34+ const installsPath = path.join(root, "plugins", "installs.json");
35+ await fs.mkdir(path.dirname(installsPath), { recursive: true });
36+ await fs.writeFile(
37+ installsPath,
38+ JSON.stringify({
39+ version: 1,
40+ plugins: [
41+ {
42+ pluginId: "ghost",
43+ manifestPath: path.join(pluginDir, "openclaw.plugin.json"),
44+ rootDir: pluginDir,
45+ enabled: true,
46+ packageJson: { path: "package.json" },
47+ },
48+ ],
49+ }),
50+ "utf-8",
51+ );
515252-const report = await runPostUpgradeProbes({ installsPath });
53-const finding = report.findings.find((f) => f.code === "plugin.entry_unresolved");
54-expect(finding).toBeDefined();
55-expect(finding?.level).toBe("error");
56-expect(finding?.plugin).toBe("ghost");
57-expect(finding?.entry).toBe("./dist/index.js");
53+const report = await runPostUpgradeProbes({ installsPath });
54+const finding = report.findings.find((f) => f.code === "plugin.entry_unresolved");
55+expect(finding).toBeDefined();
56+expect(finding?.level).toBe("error");
57+expect(finding?.plugin).toBe("ghost");
58+expect(finding?.entry).toBe("./dist/index.js");
59+} finally {
60+await fs.rm(root, { recursive: true, force: true });
61+}
5862});
59636064it("emits no entry_unresolved findings when the entry resolves", async () => {
6165const root = await makeFixtureRoot("entry-ok");
62-const pluginDir = path.join(root, "user-plugins", "good");
63-await fs.mkdir(path.join(pluginDir, "dist"), { recursive: true });
64-await fs.writeFile(path.join(pluginDir, "dist", "index.js"), "export default {};", "utf-8");
65-await fs.writeFile(
66-path.join(pluginDir, "package.json"),
67-JSON.stringify({
68-name: "good",
69-version: "0.0.1",
70-type: "module",
71-openclaw: { extensions: ["./dist/index.js"] },
72-}),
73-"utf-8",
74-);
75-await fs.writeFile(
76-path.join(pluginDir, "openclaw.plugin.json"),
77-JSON.stringify({ id: "good" }),
78-"utf-8",
79-);
66+try {
67+const pluginDir = path.join(root, "user-plugins", "good");
68+await fs.mkdir(path.join(pluginDir, "dist"), { recursive: true });
69+await fs.writeFile(path.join(pluginDir, "dist", "index.js"), "export default {};", "utf-8");
70+await fs.writeFile(
71+path.join(pluginDir, "package.json"),
72+JSON.stringify({
73+name: "good",
74+version: "0.0.1",
75+type: "module",
76+openclaw: { extensions: ["./dist/index.js"] },
77+}),
78+"utf-8",
79+);
80+await fs.writeFile(
81+path.join(pluginDir, "openclaw.plugin.json"),
82+JSON.stringify({ id: "good" }),
83+"utf-8",
84+);
808581-const installsPath = path.join(root, "plugins", "installs.json");
82-await fs.mkdir(path.dirname(installsPath), { recursive: true });
83-await fs.writeFile(
84-installsPath,
85-JSON.stringify({
86-version: 1,
87-plugins: [
88-{
89-pluginId: "good",
90-manifestPath: path.join(pluginDir, "openclaw.plugin.json"),
91-rootDir: pluginDir,
92-enabled: true,
93-packageJson: { path: "package.json" },
94-},
95-],
96-}),
97-"utf-8",
98-);
86+ const installsPath = path.join(root, "plugins", "installs.json");
87+ await fs.mkdir(path.dirname(installsPath), { recursive: true });
88+ await fs.writeFile(
89+ installsPath,
90+ JSON.stringify({
91+ version: 1,
92+ plugins: [
93+ {
94+ pluginId: "good",
95+ manifestPath: path.join(pluginDir, "openclaw.plugin.json"),
96+ rootDir: pluginDir,
97+ enabled: true,
98+ packageJson: { path: "package.json" },
99+ },
100+ ],
101+ }),
102+ "utf-8",
103+ );
99104100-const report = await runPostUpgradeProbes({ installsPath });
101-expect(report.findings.filter((f) => f.code === "plugin.entry_unresolved")).toHaveLength(0);
105+const report = await runPostUpgradeProbes({ installsPath });
106+expect(report.findings.filter((f) => f.code === "plugin.entry_unresolved")).toHaveLength(0);
107+} finally {
108+await fs.rm(root, { recursive: true, force: true });
109+}
102110});
103111});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。