mirror of https://github.com/openclaw/openclaw.git
82 lines
2.3 KiB
TypeScript
82 lines
2.3 KiB
TypeScript
import { Command } from "commander";
|
|
import { beforeEach, describe, expect, it, vi } from "vitest";
|
|
import { runRegisteredCli } from "../test-utils/command-runner.js";
|
|
import { registerUpdateCli } from "./update-cli.js";
|
|
|
|
const mocks = vi.hoisted(() => ({
|
|
updateCommand: vi.fn(async (_opts: unknown) => {}),
|
|
updateStatusCommand: vi.fn(async (_opts: unknown) => {}),
|
|
updateWizardCommand: vi.fn(async (_opts: unknown) => {}),
|
|
defaultRuntime: {
|
|
log: vi.fn(),
|
|
error: vi.fn(),
|
|
writeStdout: vi.fn(),
|
|
writeJson: vi.fn(),
|
|
exit: vi.fn(),
|
|
},
|
|
}));
|
|
|
|
const { updateCommand, updateStatusCommand, updateWizardCommand, defaultRuntime } = mocks;
|
|
|
|
vi.mock("./update-cli/update-command.js", () => ({
|
|
updateCommand: (opts: unknown) => mocks.updateCommand(opts),
|
|
}));
|
|
|
|
vi.mock("./update-cli/status.js", () => ({
|
|
updateStatusCommand: (opts: unknown) => mocks.updateStatusCommand(opts),
|
|
}));
|
|
|
|
vi.mock("./update-cli/wizard.js", () => ({
|
|
updateWizardCommand: (opts: unknown) => mocks.updateWizardCommand(opts),
|
|
}));
|
|
|
|
vi.mock("../runtime.js", () => ({
|
|
defaultRuntime: mocks.defaultRuntime,
|
|
}));
|
|
|
|
describe("update cli option collisions", () => {
|
|
beforeEach(() => {
|
|
updateCommand.mockClear();
|
|
updateStatusCommand.mockClear();
|
|
updateWizardCommand.mockClear();
|
|
defaultRuntime.log.mockClear();
|
|
defaultRuntime.error.mockClear();
|
|
defaultRuntime.writeStdout.mockClear();
|
|
defaultRuntime.writeJson.mockClear();
|
|
defaultRuntime.exit.mockClear();
|
|
});
|
|
|
|
it.each([
|
|
{
|
|
name: "forwards parent-captured --json/--timeout to `update status`",
|
|
argv: ["update", "status", "--json", "--timeout", "9"],
|
|
assert: () => {
|
|
expect(updateStatusCommand).toHaveBeenCalledWith(
|
|
expect.objectContaining({
|
|
json: true,
|
|
timeout: "9",
|
|
}),
|
|
);
|
|
},
|
|
},
|
|
{
|
|
name: "forwards parent-captured --timeout to `update wizard`",
|
|
argv: ["update", "wizard", "--timeout", "13"],
|
|
assert: () => {
|
|
expect(updateWizardCommand).toHaveBeenCalledWith(
|
|
expect.objectContaining({
|
|
timeout: "13",
|
|
}),
|
|
);
|
|
},
|
|
},
|
|
])("$name", async ({ argv, assert }) => {
|
|
await runRegisteredCli({
|
|
register: registerUpdateCli as (program: Command) => void,
|
|
argv,
|
|
});
|
|
|
|
assert();
|
|
});
|
|
});
|