fix(cli): match closed prompt errors by type

This commit is contained in:
ai-hpc
2026-04-28 16:51:18 +00:00
committed by Mason Huang
parent beb56424f3
commit d91da30c70
2 changed files with 9 additions and 4 deletions

View File

@@ -74,6 +74,12 @@ const uninstallPlugin: AsyncUnknownMock = vi.fn();
export const updateNpmInstalledPlugins: AsyncUnknownMock = vi.fn();
export const updateNpmInstalledHookPacks: AsyncUnknownMock = vi.fn();
export const promptYesNo: AsyncUnknownMock = vi.fn();
export class PromptInputClosedError extends Error {
constructor() {
super("Prompt input closed before an answer was received.");
this.name = "PromptInputClosedError";
}
}
export const installPluginFromNpmSpec: AsyncUnknownMock = vi.fn();
export const installPluginFromPath: AsyncUnknownMock = vi.fn();
export const installPluginFromClawHub: AsyncUnknownMock = vi.fn();
@@ -455,6 +461,7 @@ vi.mock("../hooks/update.js", () => ({
}));
vi.mock("./prompt.js", () => ({
PromptInputClosedError,
promptYesNo: ((...args: Parameters<(typeof import("./prompt.js"))["promptYesNo"]>) =>
invokeMock<
Parameters<(typeof import("./prompt.js"))["promptYesNo"]>,

View File

@@ -7,6 +7,7 @@ import {
buildPluginSnapshotReport,
loadConfig,
planPluginUninstall,
PromptInputClosedError,
promptYesNo,
refreshPluginRegistry,
replaceConfigFile,
@@ -163,9 +164,6 @@ describe("plugins cli uninstall", () => {
},
},
} as OpenClawConfig;
const promptClosedError = new Error("prompt closed");
promptClosedError.name = "PromptInputClosedError";
loadConfig.mockReturnValue(baseConfig);
setInstalledPluginIndexInstallRecords(baseConfig.plugins?.installs ?? {});
buildPluginDiagnosticsReport.mockReturnValue({
@@ -187,7 +185,7 @@ describe("plugins cli uninstall", () => {
},
directoryRemoval: null,
});
promptYesNo.mockRejectedValueOnce(promptClosedError);
promptYesNo.mockRejectedValueOnce(new PromptInputClosedError());
await expect(runPluginsCommand(["plugins", "uninstall", "alpha"])).rejects.toThrow(
"__exit__:1",