Merged via squash. Prepared head SHA: ed46625ae20c71e5f46d51aa801cefe4ef1c92e3 Co-authored-by: shichangs <46870204+shichangs@users.noreply.github.com> Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com> Reviewed-by: @gumadeiras
105 lines
2.6 KiB
TypeScript
105 lines
2.6 KiB
TypeScript
import { Command } from "commander";
|
|
import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
|
|
|
|
const backupCreateCommand = vi.fn();
|
|
const backupVerifyCommand = vi.fn();
|
|
|
|
const runtime = {
|
|
log: vi.fn(),
|
|
error: vi.fn(),
|
|
exit: vi.fn(),
|
|
};
|
|
|
|
vi.mock("../../commands/backup.js", () => ({
|
|
backupCreateCommand,
|
|
}));
|
|
|
|
vi.mock("../../commands/backup-verify.js", () => ({
|
|
backupVerifyCommand,
|
|
}));
|
|
|
|
vi.mock("../../runtime.js", () => ({
|
|
defaultRuntime: runtime,
|
|
}));
|
|
|
|
let registerBackupCommand: typeof import("./register.backup.js").registerBackupCommand;
|
|
|
|
beforeAll(async () => {
|
|
({ registerBackupCommand } = await import("./register.backup.js"));
|
|
});
|
|
|
|
describe("registerBackupCommand", () => {
|
|
async function runCli(args: string[]) {
|
|
const program = new Command();
|
|
registerBackupCommand(program);
|
|
await program.parseAsync(args, { from: "user" });
|
|
}
|
|
|
|
beforeEach(() => {
|
|
vi.clearAllMocks();
|
|
backupCreateCommand.mockResolvedValue(undefined);
|
|
backupVerifyCommand.mockResolvedValue(undefined);
|
|
});
|
|
|
|
it("runs backup create with forwarded options", async () => {
|
|
await runCli(["backup", "create", "--output", "/tmp/backups", "--json", "--dry-run"]);
|
|
|
|
expect(backupCreateCommand).toHaveBeenCalledWith(
|
|
runtime,
|
|
expect.objectContaining({
|
|
output: "/tmp/backups",
|
|
json: true,
|
|
dryRun: true,
|
|
verify: false,
|
|
onlyConfig: false,
|
|
includeWorkspace: true,
|
|
}),
|
|
);
|
|
});
|
|
|
|
it("honors --no-include-workspace", async () => {
|
|
await runCli(["backup", "create", "--no-include-workspace"]);
|
|
|
|
expect(backupCreateCommand).toHaveBeenCalledWith(
|
|
runtime,
|
|
expect.objectContaining({
|
|
includeWorkspace: false,
|
|
}),
|
|
);
|
|
});
|
|
|
|
it("forwards --verify to backup create", async () => {
|
|
await runCli(["backup", "create", "--verify"]);
|
|
|
|
expect(backupCreateCommand).toHaveBeenCalledWith(
|
|
runtime,
|
|
expect.objectContaining({
|
|
verify: true,
|
|
}),
|
|
);
|
|
});
|
|
|
|
it("forwards --only-config to backup create", async () => {
|
|
await runCli(["backup", "create", "--only-config"]);
|
|
|
|
expect(backupCreateCommand).toHaveBeenCalledWith(
|
|
runtime,
|
|
expect.objectContaining({
|
|
onlyConfig: true,
|
|
}),
|
|
);
|
|
});
|
|
|
|
it("runs backup verify with forwarded options", async () => {
|
|
await runCli(["backup", "verify", "/tmp/openclaw-backup.tar.gz", "--json"]);
|
|
|
|
expect(backupVerifyCommand).toHaveBeenCalledWith(
|
|
runtime,
|
|
expect.objectContaining({
|
|
archive: "/tmp/openclaw-backup.tar.gz",
|
|
json: true,
|
|
}),
|
|
);
|
|
});
|
|
});
|