
























@@ -24,6 +24,26 @@ const CLI_STATE_ROOT = "/tmp/openclaw-state";
2424const ALPHA_INSTALL_PATH = installedPluginRoot(CLI_STATE_ROOT, "alpha");
2525const ORIGINAL_OPENCLAW_NIX_MODE = process.env.OPENCLAW_NIX_MODE;
262627+function expectRuntimeLogIncludes(fragment: string) {
28+expect(runtimeLogs.some((message) => message.includes(fragment))).toBe(true);
29+}
30+31+function expectLatestUninstallPlanParams(expected: {
32+pluginId: string;
33+deleteFiles: boolean;
34+channelIds?: unknown;
35+}) {
36+expect(planPluginUninstall).toHaveBeenCalled();
37+const params = planPluginUninstall.mock.calls.at(-1)?.[0] as
38+| { pluginId?: string; deleteFiles?: boolean; channelIds?: unknown }
39+| undefined;
40+expect(params?.pluginId).toBe(expected.pluginId);
41+expect(params?.deleteFiles).toBe(expected.deleteFiles);
42+if ("channelIds" in expected) {
43+expect(params?.channelIds).toBe(expected.channelIds);
44+}
45+}
46+2747describe("plugins cli uninstall", () => {
2848beforeEach(() => {
2949resetPluginsCliTestState();
@@ -104,12 +124,8 @@ describe("plugins cli uninstall", () => {
104124expect(planPluginUninstall).toHaveBeenCalled();
105125expect(writeConfigFile).not.toHaveBeenCalled();
106126expect(refreshPluginRegistry).not.toHaveBeenCalled();
107-expect(runtimeLogs).toEqual(
108-expect.arrayContaining([expect.stringContaining("Dry run, no changes made.")]),
109-);
110-expect(runtimeLogs).toEqual(
111-expect.arrayContaining([expect.stringContaining("context engine slot")]),
112-);
127+expectRuntimeLogIncludes("Dry run, no changes made.");
128+expectRuntimeLogIncludes("context engine slot");
113129});
114130115131it("uninstalls with --force and --keep-files without prompting", async () => {
@@ -159,12 +175,7 @@ describe("plugins cli uninstall", () => {
159175await runPluginsCommand(["plugins", "uninstall", "alpha", "--force", "--keep-files"]);
160176161177expect(promptYesNo).not.toHaveBeenCalled();
162-expect(planPluginUninstall).toHaveBeenCalledWith(
163-expect.objectContaining({
164-pluginId: "alpha",
165-deleteFiles: false,
166-}),
167-);
178+expectLatestUninstallPlanParams({ pluginId: "alpha", deleteFiles: false });
168179expect(writePersistedInstalledPluginIndexInstallRecords).toHaveBeenCalledWith({});
169180expect(writeConfigFile).toHaveBeenCalledWith({
170181plugins: {
@@ -393,12 +404,7 @@ describe("plugins cli uninstall", () => {
393404394405await runPluginsCommand(["plugins", "uninstall", "alpha", "--force"]);
395406396-expect(planPluginUninstall).toHaveBeenCalledWith(
397-expect.objectContaining({
398-pluginId: "alpha",
399-deleteFiles: true,
400-}),
401-);
407+expectLatestUninstallPlanParams({ pluginId: "alpha", deleteFiles: true });
402408expect(writeConfigFile).toHaveBeenCalledWith(nextConfig);
403409expect(runtimeLogs.at(-2)).toContain('Uninstalled plugin "alpha"');
404410});
@@ -437,12 +443,7 @@ describe("plugins cli uninstall", () => {
437443438444await runPluginsCommand(["plugins", "uninstall", "alpha", "--force"]);
439445440-expect(planPluginUninstall).toHaveBeenCalledWith(
441-expect.objectContaining({
442-pluginId: "alpha",
443-deleteFiles: true,
444-}),
445-);
446+expectLatestUninstallPlanParams({ pluginId: "alpha", deleteFiles: true });
446447expect(writeConfigFile).toHaveBeenCalledWith(nextConfig);
447448expect(refreshPluginRegistry).toHaveBeenCalledWith({
448449config: nextConfig,
@@ -510,18 +511,14 @@ describe("plugins cli uninstall", () => {
510511511512await runPluginsCommand(["plugins", "uninstall", "alpha", "--force", "--keep-files"]);
512513513-expect(planPluginUninstall).toHaveBeenCalledWith(
514-expect.objectContaining({
515-pluginId: "alpha",
516-channelIds: undefined,
517-deleteFiles: false,
518-}),
519-);
514+expectLatestUninstallPlanParams({
515+pluginId: "alpha",
516+channelIds: undefined,
517+deleteFiles: false,
518+});
520519expect(writePersistedInstalledPluginIndexInstallRecords).toHaveBeenCalledWith({});
521520expect(writeConfigFile).toHaveBeenCalledWith(nextConfig);
522-expect(runtimeLogs).toEqual(
523-expect.arrayContaining([expect.stringContaining("channel config (channels.alpha)")]),
524-);
521+expectRuntimeLogIncludes("channel config (channels.alpha)");
525522expect(runtimeLogs.at(-2)).toContain('Uninstalled plugin "alpha"');
526523});
527524此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。