test(perf): dedupe setup in cli/security script suites

This commit is contained in:
Peter Steinberger
2026-03-02 10:53:21 +00:00
parent 4a8ada662e
commit 96ef6ea3cf
3 changed files with 86 additions and 86 deletions

View File

@@ -74,38 +74,38 @@ afterEach(() => {
describe("registerPreActionHooks", () => {
function buildProgram() {
const program = new Command().name("openclaw");
program.command("status").action(async () => {});
program.command("doctor").action(async () => {});
program.command("completion").action(async () => {});
program.command("secrets").action(async () => {});
program.command("status").action(() => {});
program.command("doctor").action(() => {});
program.command("completion").action(() => {});
program.command("secrets").action(() => {});
program
.command("update")
.command("status")
.option("--json")
.action(async () => {});
.action(() => {});
const config = program.command("config");
config
.command("set")
.argument("<path>")
.argument("<value>")
.option("--json")
.action(async () => {});
program.command("channels").action(async () => {});
program.command("directory").action(async () => {});
program.command("agents").action(async () => {});
program.command("configure").action(async () => {});
program.command("onboard").action(async () => {});
.action(() => {});
program.command("agents").action(() => {});
program.command("configure").action(() => {});
program.command("onboard").action(() => {});
program
.command("message")
.command("send")
.option("--json")
.action(async () => {});
.action(() => {});
registerPreActionHooks(program, "9.9.9-test");
return program;
}
async function runCommand(params: { parseArgv: string[]; processArgv?: string[] }) {
const program = buildProgram();
async function runCommand(
params: { parseArgv: string[]; processArgv?: string[] },
program = buildProgram(),
) {
process.argv = params.processArgv ?? [...params.parseArgv];
await program.parseAsync(params.parseArgv, { from: "user" });
}
@@ -143,29 +143,43 @@ describe("registerPreActionHooks", () => {
it("loads plugin registry for configure/onboard/agents commands", async () => {
const commands = ["configure", "onboard", "agents"] as const;
const program = buildProgram();
for (const command of commands) {
vi.clearAllMocks();
await runCommand({
parseArgv: [command],
processArgv: ["node", "openclaw", command],
});
await runCommand(
{
parseArgv: [command],
processArgv: ["node", "openclaw", command],
},
program,
);
expect(ensurePluginRegistryLoadedMock, command).toHaveBeenCalledTimes(1);
}
});
it("skips config guard for doctor, completion, and secrets commands", async () => {
await runCommand({
parseArgv: ["doctor"],
processArgv: ["node", "openclaw", "doctor"],
});
await runCommand({
parseArgv: ["completion"],
processArgv: ["node", "openclaw", "completion"],
});
await runCommand({
parseArgv: ["secrets"],
processArgv: ["node", "openclaw", "secrets"],
});
const program = buildProgram();
await runCommand(
{
parseArgv: ["doctor"],
processArgv: ["node", "openclaw", "doctor"],
},
program,
);
await runCommand(
{
parseArgv: ["completion"],
processArgv: ["node", "openclaw", "completion"],
},
program,
);
await runCommand(
{
parseArgv: ["secrets"],
processArgv: ["node", "openclaw", "secrets"],
},
program,
);
expect(ensureConfigReadyMock).not.toHaveBeenCalled();
});
@@ -193,10 +207,14 @@ describe("registerPreActionHooks", () => {
});
it("suppresses doctor stdout for any --json output command", async () => {
await runCommand({
parseArgv: ["message", "send", "--json"],
processArgv: ["node", "openclaw", "message", "send", "--json"],
});
const program = buildProgram();
await runCommand(
{
parseArgv: ["message", "send", "--json"],
processArgv: ["node", "openclaw", "message", "send", "--json"],
},
program,
);
expect(ensureConfigReadyMock).toHaveBeenCalledWith({
runtime: runtimeMock,
@@ -206,10 +224,13 @@ describe("registerPreActionHooks", () => {
vi.clearAllMocks();
await runCommand({
parseArgv: ["update", "status", "--json"],
processArgv: ["node", "openclaw", "update", "status", "--json"],
});
await runCommand(
{
parseArgv: ["update", "status", "--json"],
processArgv: ["node", "openclaw", "update", "status", "--json"],
},
program,
);
expect(ensureConfigReadyMock).toHaveBeenCalledWith({
runtime: runtimeMock,