Files
openclaw/src/cli/command-registration-policy.test.ts
2026-05-02 23:07:25 +01:00

97 lines
3.2 KiB
TypeScript

import { describe, expect, it } from "vitest";
import {
shouldEagerRegisterSubcommands,
shouldRegisterPrimaryCommandOnly,
shouldRegisterPrimarySubcommandOnly,
shouldSkipPluginCommandRegistration,
} from "./command-registration-policy.js";
describe("command-registration-policy", () => {
it("matches primary command registration policy", () => {
expect(shouldRegisterPrimaryCommandOnly(["node", "openclaw", "status"])).toBe(true);
expect(shouldRegisterPrimaryCommandOnly(["node", "openclaw", "status", "--help"])).toBe(true);
expect(shouldRegisterPrimaryCommandOnly(["node", "openclaw", "-V"])).toBe(false);
expect(shouldRegisterPrimaryCommandOnly(["node", "openclaw", "acp", "-v"])).toBe(true);
});
it("matches plugin registration skip policy", () => {
expect(
shouldSkipPluginCommandRegistration({
argv: ["node", "openclaw", "--help"],
primary: null,
hasBuiltinPrimary: false,
}),
).toBe(true);
expect(
shouldSkipPluginCommandRegistration({
argv: ["node", "openclaw", "config", "--help"],
primary: "config",
hasBuiltinPrimary: true,
}),
).toBe(true);
expect(
shouldSkipPluginCommandRegistration({
argv: ["node", "openclaw", "voicecall", "--help"],
primary: "voicecall",
hasBuiltinPrimary: false,
}),
).toBe(false);
expect(
shouldSkipPluginCommandRegistration({
argv: ["node", "openclaw", "help", "--help"],
primary: "help",
hasBuiltinPrimary: false,
}),
).toBe(true);
expect(
shouldSkipPluginCommandRegistration({
argv: ["node", "openclaw", "help", "voicecall"],
primary: "help",
hasBuiltinPrimary: false,
}),
).toBe(false);
expect(
shouldSkipPluginCommandRegistration({
argv: ["node", "openclaw", "auth", "login"],
primary: "auth",
hasBuiltinPrimary: false,
}),
).toBe(true);
expect(
shouldSkipPluginCommandRegistration({
argv: ["node", "openclaw", "tool", "image_generate"],
primary: "tool",
hasBuiltinPrimary: false,
}),
).toBe(true);
expect(
shouldSkipPluginCommandRegistration({
argv: ["node", "openclaw", "tools", "effective"],
primary: "tools",
hasBuiltinPrimary: false,
}),
).toBe(true);
expect(
shouldSkipPluginCommandRegistration({
argv: ["node", "openclaw", "googlemeet", "login"],
primary: "googlemeet",
hasBuiltinPrimary: false,
}),
).toBe(false);
});
it("matches lazy subcommand registration policy", () => {
expect(shouldEagerRegisterSubcommands({ OPENCLAW_DISABLE_LAZY_SUBCOMMANDS: "1" })).toBe(true);
expect(shouldEagerRegisterSubcommands({ OPENCLAW_DISABLE_LAZY_SUBCOMMANDS: "0" })).toBe(false);
expect(shouldRegisterPrimarySubcommandOnly(["node", "openclaw", "acp"], {})).toBe(true);
expect(shouldRegisterPrimarySubcommandOnly(["node", "openclaw", "acp", "--help"], {})).toBe(
true,
);
expect(
shouldRegisterPrimarySubcommandOnly(["node", "openclaw", "acp"], {
OPENCLAW_DISABLE_LAZY_SUBCOMMANDS: "1",
}),
).toBe(false);
});
});