From 0c2296015c4e241e16614748197e1ec89644cfa6 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Mon, 11 May 2026 14:56:43 +0100 Subject: [PATCH] test: tighten cli assertion checks --- src/cli/container-target.test.ts | 10 ++++------ src/cli/nodes-cli.coverage.test.ts | 12 +++++++----- src/cli/pairing-cli.test.ts | 13 ++++--------- src/cli/plugins-install-config.test.ts | 6 ++---- src/cli/program/build-program.test.ts | 2 +- src/cli/skills-cli.test.ts | 20 +++++++++----------- src/cli/update-cli/update-command.test.ts | 21 ++++++++++----------- 7 files changed, 37 insertions(+), 47 deletions(-) diff --git a/src/cli/container-target.test.ts b/src/cli/container-target.test.ts index c8c7a3f099a..ffb6cc57d54 100644 --- a/src/cli/container-target.test.ts +++ b/src/cli/container-target.test.ts @@ -356,12 +356,10 @@ describe("maybeRunCliInContainer", () => { spawnSync, }); - expect(spawnSync).toHaveBeenNthCalledWith( - 3, - "podman", - expect.arrayContaining(["OPENCLAW_PROXY_URL=http://127.0.0.1:3128"]), - expect.anything(), - ); + const podmanCall = spawnSync.mock.calls[2]; + expect(podmanCall?.[0]).toBe("podman"); + expect(podmanCall?.[1]).toContain("OPENCLAW_PROXY_URL=http://127.0.0.1:3128"); + expect(podmanCall?.[2]).toBeDefined(); }); it("executes through podman when the named container is running", () => { diff --git a/src/cli/nodes-cli.coverage.test.ts b/src/cli/nodes-cli.coverage.test.ts index 2ed0e2533b7..cc9d1956066 100644 --- a/src/cli/nodes-cli.coverage.test.ts +++ b/src/cli/nodes-cli.coverage.test.ts @@ -112,11 +112,13 @@ describe("nodes-cli coverage", () => { it("does not register the removed run wrapper", async () => { await withSuppressedStderr(async () => { - await expect( - sharedProgram.parseAsync(["nodes", "run", "--node", "mac-1"], { from: "user" }), - ).rejects.toMatchObject({ - code: "commander.unknownCommand", - }); + let error: { code?: unknown } | undefined; + try { + await sharedProgram.parseAsync(["nodes", "run", "--node", "mac-1"], { from: "user" }); + } catch (err) { + error = err as { code?: unknown }; + } + expect(error?.code).toBe("commander.unknownCommand"); }); }); diff --git a/src/cli/pairing-cli.test.ts b/src/cli/pairing-cli.test.ts index b3b1607457f..3689f7c703f 100644 --- a/src/cli/pairing-cli.test.ts +++ b/src/cli/pairing-cli.test.ts @@ -225,15 +225,10 @@ describe("pairing cli", () => { channel: "telegram", code: "ABCDEFGH", }); - expect(replaceConfigFile).toHaveBeenCalledWith( - expect.objectContaining({ - nextConfig: { - commands: { - ownerAllowFrom: ["telegram:123"], - }, - }, - }), - ); + const replaceCall = replaceConfigFile.mock.calls[0]?.[0] as + | { nextConfig?: { commands?: { ownerAllowFrom?: string[] } } } + | undefined; + expect(replaceCall?.nextConfig?.commands?.ownerAllowFrom).toEqual(["telegram:123"]); expect(log).toHaveBeenCalledWith(expect.stringContaining("Approved")); expect(log).toHaveBeenCalledWith(expect.stringContaining("Command owner configured")); } finally { diff --git a/src/cli/plugins-install-config.test.ts b/src/cli/plugins-install-config.test.ts index 0eea1e2a916..51c7c672634 100644 --- a/src/cli/plugins-install-config.test.ts +++ b/src/cli/plugins-install-config.test.ts @@ -142,10 +142,8 @@ describe("loadConfigForInstall", () => { throw new Error(request.error); } - expect(request.request).toMatchObject({ - bundledPluginId: "discord", - allowInvalidConfigRecovery: true, - }); + expect(request.request.bundledPluginId).toBe("discord"); + expect(request.request.allowInvalidConfigRecovery).toBe(true); const result = await loadConfigForInstall(request.request); expect(collectChannelDoctorStaleConfigMutationsMock).toHaveBeenCalledWith(snapshotCfg); expect(result).toEqual({ config: snapshotCfg, baseHash: "abc" }); diff --git a/src/cli/program/build-program.test.ts b/src/cli/program/build-program.test.ts index 9cbdb730ebb..ee472b02b55 100644 --- a/src/cli/program/build-program.test.ts +++ b/src/cli/program/build-program.test.ts @@ -44,7 +44,7 @@ describe("buildProgram", () => { const error = await promise.catch((err) => err); expect(error).toBeInstanceOf(CommanderError); - expect(error).toMatchObject({ exitCode }); + expect((error as CommanderError).exitCode).toBe(exitCode); return error as CommanderError; } diff --git a/src/cli/skills-cli.test.ts b/src/cli/skills-cli.test.ts index 59d75f51e93..604a5e3a019 100644 --- a/src/cli/skills-cli.test.ts +++ b/src/cli/skills-cli.test.ts @@ -378,17 +378,15 @@ describe("skills-cli", () => { notInjected: Array<{ name: string; reason: string }>; missingRequirements: Array<{ name: string }>; }; - expect(parsed.summary).toMatchObject({ - total: 7, - eligible: 4, - modelVisible: 2, - commandVisible: 2, - disabled: 1, - blocked: 1, - agentFiltered: 1, - notInjected: 1, - missingRequirements: 1, - }); + expect(parsed.summary.total).toBe(7); + expect(parsed.summary.eligible).toBe(4); + expect(parsed.summary.modelVisible).toBe(2); + expect(parsed.summary.commandVisible).toBe(2); + expect(parsed.summary.disabled).toBe(1); + expect(parsed.summary.blocked).toBe(1); + expect(parsed.summary.agentFiltered).toBe(1); + expect(parsed.summary.notInjected).toBe(1); + expect(parsed.summary.missingRequirements).toBe(1); expect(parsed.modelVisible).toEqual(["ready", "slash-hidden"]); expect(parsed.commandVisible).toEqual(["ready", "prompt-hidden"]); expect(parsed.agentFiltered).toEqual(["agent-filtered"]); diff --git a/src/cli/update-cli/update-command.test.ts b/src/cli/update-cli/update-command.test.ts index 88811bb0005..98f5434339c 100644 --- a/src/cli/update-cli/update-command.test.ts +++ b/src/cli/update-cli/update-command.test.ts @@ -531,18 +531,17 @@ describe("recoverLaunchAgentAndRecheckGatewayHealth", () => { })); const waitForHealthy = vi.fn(async () => stillUnhealthy); - await expect( - recoverLaunchAgentAndRecheckGatewayHealth({ - health: unhealthy, - service, - port: 18790, - expectedVersion: "2026.5.3", - deps: { recoverLaunchAgent, waitForHealthy }, - }), - ).resolves.toMatchObject({ - health: { healthy: false, waitOutcome: "timeout" }, - launchAgentRecovery: { attempted: true, recovered: true }, + const result = await recoverLaunchAgentAndRecheckGatewayHealth({ + health: unhealthy, + service, + port: 18790, + expectedVersion: "2026.5.3", + deps: { recoverLaunchAgent, waitForHealthy }, }); + expect(result.health.healthy).toBe(false); + expect(result.health.waitOutcome).toBe("timeout"); + expect(result.launchAgentRecovery?.attempted).toBe(true); + expect(result.launchAgentRecovery?.recovered).toBe(true); }); });