mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-06 17:00:50 +00:00
fix(cli): preserve lazy command parent flags
This commit is contained in:
@@ -3,16 +3,20 @@ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
||||
|
||||
const manageMocks = vi.hoisted(() => {
|
||||
const doctorAction = vi.fn();
|
||||
const openAction = vi.fn();
|
||||
const statusAction = vi.fn();
|
||||
const tabsAction = vi.fn();
|
||||
const registerBrowserManageCommands = vi.fn((browser: Command) => {
|
||||
browser.command("status").description("Show browser status").action(statusAction);
|
||||
browser.command("tabs").description("List tabs").action(tabsAction);
|
||||
browser.command("open").description("Open URL").argument("<url>").action(openAction);
|
||||
browser
|
||||
.command("doctor")
|
||||
.description("Check browser plugin readiness")
|
||||
.option("--deep", "Run a live snapshot probe")
|
||||
.action(doctorAction);
|
||||
});
|
||||
return { doctorAction, registerBrowserManageCommands, statusAction };
|
||||
return { doctorAction, openAction, registerBrowserManageCommands, statusAction, tabsAction };
|
||||
});
|
||||
const inspectMocks = vi.hoisted(() => ({
|
||||
registerBrowserInspectCommands: vi.fn(),
|
||||
@@ -44,7 +48,9 @@ describe("registerBrowserCli lazy browser subcommands", () => {
|
||||
vi.unstubAllEnvs();
|
||||
manageMocks.registerBrowserManageCommands.mockClear();
|
||||
manageMocks.doctorAction.mockClear();
|
||||
manageMocks.openAction.mockClear();
|
||||
manageMocks.statusAction.mockClear();
|
||||
manageMocks.tabsAction.mockClear();
|
||||
inspectMocks.registerBrowserInspectCommands.mockClear();
|
||||
actionInputMocks.registerBrowserActionInputCommands.mockClear();
|
||||
actionObserveMocks.registerBrowserActionObserveCommands.mockClear();
|
||||
@@ -103,6 +109,29 @@ describe("registerBrowserCli lazy browser subcommands", () => {
|
||||
expect(manageMocks.doctorAction.mock.calls[0]?.[0]).toMatchObject({ deep: true });
|
||||
});
|
||||
|
||||
it("preserves parent --json while reparsing lazy manage commands", async () => {
|
||||
const program = new Command();
|
||||
program.name("openclaw");
|
||||
|
||||
registerBrowserCli(program, ["node", "openclaw", "browser", "--json", "open", "about:blank"]);
|
||||
|
||||
await program.parseAsync(["browser", "--json", "open", "about:blank"], { from: "user" });
|
||||
|
||||
expect(manageMocks.openAction).toHaveBeenCalledTimes(1);
|
||||
const openCommand = manageMocks.openAction.mock.calls[0]?.at(-1) as Command | undefined;
|
||||
expect(openCommand?.parent?.opts()).toMatchObject({ json: true });
|
||||
|
||||
const tabsProgram = new Command();
|
||||
tabsProgram.name("openclaw");
|
||||
registerBrowserCli(tabsProgram, ["node", "openclaw", "browser", "--json", "tabs"]);
|
||||
|
||||
await tabsProgram.parseAsync(["browser", "--json", "tabs"], { from: "user" });
|
||||
|
||||
expect(manageMocks.tabsAction).toHaveBeenCalledTimes(1);
|
||||
const tabsCommand = manageMocks.tabsAction.mock.calls[0]?.at(-1) as Command | undefined;
|
||||
expect(tabsCommand?.parent?.opts()).toMatchObject({ json: true });
|
||||
});
|
||||
|
||||
it("can eagerly register all browser groups for compatibility", async () => {
|
||||
vi.stubEnv("OPENCLAW_DISABLE_LAZY_SUBCOMMANDS", "1");
|
||||
const program = new Command();
|
||||
|
||||
Reference in New Issue
Block a user