diff --git a/src/cli/update-cli.test.ts b/src/cli/update-cli.test.ts index b9e078199..20b935e7e 100644 --- a/src/cli/update-cli.test.ts +++ b/src/cli/update-cli.test.ts @@ -176,6 +176,39 @@ describe("update-cli", () => { }); }; + const setupNonInteractiveDowngrade = async () => { + const tempDir = await createCaseDir("openclaw-update"); + setTty(false); + readPackageVersion.mockResolvedValue("2.0.0"); + + vi.mocked(resolveOpenClawPackageRoot).mockResolvedValue(tempDir); + vi.mocked(checkUpdateStatus).mockResolvedValue({ + root: tempDir, + installKind: "package", + packageManager: "npm", + deps: { + manager: "npm", + status: "ok", + lockfilePath: null, + markerPath: null, + }, + }); + vi.mocked(resolveNpmChannelTag).mockResolvedValue({ + tag: "latest", + version: "0.0.1", + }); + vi.mocked(runGatewayUpdate).mockResolvedValue({ + status: "ok", + mode: "npm", + steps: [], + durationMs: 100, + }); + vi.mocked(defaultRuntime.error).mockClear(); + vi.mocked(defaultRuntime.exit).mockClear(); + + return tempDir; + }; + beforeEach(() => { confirm.mockReset(); select.mockReset(); @@ -528,34 +561,7 @@ describe("update-cli", () => { }); it("requires confirmation on downgrade when non-interactive", async () => { - const tempDir = await createCaseDir("openclaw-update"); - setTty(false); - readPackageVersion.mockResolvedValue("2.0.0"); - - vi.mocked(resolveOpenClawPackageRoot).mockResolvedValue(tempDir); - vi.mocked(checkUpdateStatus).mockResolvedValue({ - root: tempDir, - installKind: "package", - packageManager: "npm", - deps: { - manager: "npm", - status: "ok", - lockfilePath: null, - markerPath: null, - }, - }); - vi.mocked(resolveNpmChannelTag).mockResolvedValue({ - tag: "latest", - version: "0.0.1", - }); - vi.mocked(runGatewayUpdate).mockResolvedValue({ - status: "ok", - mode: "npm", - steps: [], - durationMs: 100, - }); - vi.mocked(defaultRuntime.error).mockClear(); - vi.mocked(defaultRuntime.exit).mockClear(); + await setupNonInteractiveDowngrade(); await updateCommand({}); @@ -566,34 +572,7 @@ describe("update-cli", () => { }); it("allows downgrade with --yes in non-interactive mode", async () => { - const tempDir = await createCaseDir("openclaw-update"); - setTty(false); - readPackageVersion.mockResolvedValue("2.0.0"); - - vi.mocked(resolveOpenClawPackageRoot).mockResolvedValue(tempDir); - vi.mocked(checkUpdateStatus).mockResolvedValue({ - root: tempDir, - installKind: "package", - packageManager: "npm", - deps: { - manager: "npm", - status: "ok", - lockfilePath: null, - markerPath: null, - }, - }); - vi.mocked(resolveNpmChannelTag).mockResolvedValue({ - tag: "latest", - version: "0.0.1", - }); - vi.mocked(runGatewayUpdate).mockResolvedValue({ - status: "ok", - mode: "npm", - steps: [], - durationMs: 100, - }); - vi.mocked(defaultRuntime.error).mockClear(); - vi.mocked(defaultRuntime.exit).mockClear(); + await setupNonInteractiveDowngrade(); await updateCommand({ yes: true });