





















@@ -4,10 +4,12 @@ import {
44buildPluginDiagnosticsReport,
55buildPluginInspectReport,
66buildPluginRegistrySnapshotReport,
7+buildPluginSnapshotReport,
78inspectPluginRegistry,
89resetPluginsCliTestState,
910refreshPluginRegistry,
1011runPluginsCommand,
12+runtimeErrors,
1113runtimeLogs,
1214} from "./plugins-cli-test-helpers.js";
1315@@ -119,6 +121,10 @@ describe("plugins cli list", () => {
119121});
120122121123it("shows conversation-access hook policy in inspect output", async () => {
124+buildPluginSnapshotReport.mockReturnValue({
125+plugins: [createPluginRecord({ id: "openclaw-mem0", name: "Mem0" })],
126+diagnostics: [],
127+});
122128buildPluginInspectReport.mockReturnValue({
123129workspaceDir: "/workspace",
124130plugin: createPluginRecord({ id: "openclaw-mem0", name: "Mem0" }),
@@ -150,7 +156,26 @@ describe("plugins cli list", () => {
150156151157await runPluginsCommand(["plugins", "inspect", "openclaw-mem0"]);
152158159+expect(buildPluginDiagnosticsReport).toHaveBeenCalledWith({
160+config: {},
161+onlyPluginIds: ["openclaw-mem0"],
162+});
153163expect(runtimeLogs.join("\n")).toContain("Policy");
154164expect(runtimeLogs.join("\n")).toContain("allowConversationAccess: true");
155165});
166+167+it("does not runtime-load plugins when inspect target is missing", async () => {
168+buildPluginSnapshotReport.mockReturnValue({
169+plugins: [],
170+diagnostics: [],
171+});
172+173+await expect(runPluginsCommand(["plugins", "inspect", "missing-plugin"])).rejects.toThrow(
174+"__exit__:1",
175+);
176+177+expect(buildPluginSnapshotReport).toHaveBeenCalledWith({ config: {} });
178+expect(buildPluginDiagnosticsReport).not.toHaveBeenCalled();
179+expect(runtimeErrors.at(-1)).toContain("Plugin not found: missing-plugin");
180+});
156181});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。