mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-17 04:50:51 +00:00
Merged via squash.
Prepared head SHA: ed46625ae2
Co-authored-by: shichangs <46870204+shichangs@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
70 lines
2.0 KiB
TypeScript
70 lines
2.0 KiB
TypeScript
import { beforeEach, describe, expect, it, vi } from "vitest";
|
|
import { createNonExitingRuntime } from "../runtime.js";
|
|
|
|
const resolveCleanupPlanFromDisk = vi.fn();
|
|
const removePath = vi.fn();
|
|
const listAgentSessionDirs = vi.fn();
|
|
const removeStateAndLinkedPaths = vi.fn();
|
|
const removeWorkspaceDirs = vi.fn();
|
|
|
|
vi.mock("../config/config.js", () => ({
|
|
isNixMode: false,
|
|
}));
|
|
|
|
vi.mock("./cleanup-plan.js", () => ({
|
|
resolveCleanupPlanFromDisk,
|
|
}));
|
|
|
|
vi.mock("./cleanup-utils.js", () => ({
|
|
removePath,
|
|
listAgentSessionDirs,
|
|
removeStateAndLinkedPaths,
|
|
removeWorkspaceDirs,
|
|
}));
|
|
|
|
const { resetCommand } = await import("./reset.js");
|
|
|
|
describe("resetCommand", () => {
|
|
const runtime = createNonExitingRuntime();
|
|
|
|
beforeEach(() => {
|
|
vi.clearAllMocks();
|
|
resolveCleanupPlanFromDisk.mockReturnValue({
|
|
stateDir: "/tmp/.openclaw",
|
|
configPath: "/tmp/.openclaw/openclaw.json",
|
|
oauthDir: "/tmp/.openclaw/credentials",
|
|
configInsideState: true,
|
|
oauthInsideState: true,
|
|
workspaceDirs: ["/tmp/.openclaw/workspace"],
|
|
});
|
|
removePath.mockResolvedValue({ ok: true });
|
|
listAgentSessionDirs.mockResolvedValue(["/tmp/.openclaw/agents/main/sessions"]);
|
|
removeStateAndLinkedPaths.mockResolvedValue(undefined);
|
|
removeWorkspaceDirs.mockResolvedValue(undefined);
|
|
vi.spyOn(runtime, "log").mockImplementation(() => {});
|
|
vi.spyOn(runtime, "error").mockImplementation(() => {});
|
|
});
|
|
|
|
it("recommends creating a backup before state-destructive reset scopes", async () => {
|
|
await resetCommand(runtime, {
|
|
scope: "config+creds+sessions",
|
|
yes: true,
|
|
nonInteractive: true,
|
|
dryRun: true,
|
|
});
|
|
|
|
expect(runtime.log).toHaveBeenCalledWith(expect.stringContaining("openclaw backup create"));
|
|
});
|
|
|
|
it("does not recommend backup for config-only reset", async () => {
|
|
await resetCommand(runtime, {
|
|
scope: "config",
|
|
yes: true,
|
|
nonInteractive: true,
|
|
dryRun: true,
|
|
});
|
|
|
|
expect(runtime.log).not.toHaveBeenCalledWith(expect.stringContaining("openclaw backup create"));
|
|
});
|
|
});
|