mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-04 05:42:02 +00:00
test: speed up cli and command suites
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import { Command } from "commander";
|
||||
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
||||
import { captureEnv } from "../test-utils/env.js";
|
||||
import { createCliRuntimeCapture } from "./test-runtime-capture.js";
|
||||
import { registerDaemonCli } from "./daemon-cli.js";
|
||||
|
||||
const probeGatewayStatus = vi.fn(async (..._args: unknown[]) => ({ ok: true }));
|
||||
const resolveGatewayProgramArguments = vi.fn(async (_opts?: unknown) => ({
|
||||
@@ -34,7 +34,28 @@ const buildGatewayInstallPlan = vi.fn(
|
||||
}),
|
||||
);
|
||||
|
||||
const { runtimeLogs, defaultRuntime, resetRuntimeCapture } = createCliRuntimeCapture();
|
||||
const mocks = vi.hoisted(() => {
|
||||
const runtimeLogs: string[] = [];
|
||||
const stringifyArgs = (args: unknown[]) => args.map((value) => String(value)).join(" ");
|
||||
const defaultRuntime = {
|
||||
log: vi.fn((...args: unknown[]) => {
|
||||
runtimeLogs.push(stringifyArgs(args));
|
||||
}),
|
||||
error: vi.fn(),
|
||||
writeStdout: vi.fn((value: string) => {
|
||||
defaultRuntime.log(value.endsWith("\n") ? value.slice(0, -1) : value);
|
||||
}),
|
||||
writeJson: vi.fn((value: unknown, space = 2) => {
|
||||
defaultRuntime.log(JSON.stringify(value, null, space > 0 ? space : undefined));
|
||||
}),
|
||||
exit: vi.fn((code: number) => {
|
||||
throw new Error(`__exit__:${code}`);
|
||||
}),
|
||||
};
|
||||
return { runtimeLogs, defaultRuntime };
|
||||
});
|
||||
|
||||
const { runtimeLogs } = mocks;
|
||||
|
||||
vi.mock("./daemon-cli/probe.js", () => ({
|
||||
probeGatewayStatus: (opts: unknown) => probeGatewayStatus(opts),
|
||||
@@ -85,7 +106,7 @@ vi.mock("../infra/ports.js", () => ({
|
||||
|
||||
vi.mock("../runtime.js", async (importOriginal) => ({
|
||||
...(await importOriginal<typeof import("../runtime.js")>()),
|
||||
defaultRuntime,
|
||||
defaultRuntime: mocks.defaultRuntime,
|
||||
}));
|
||||
|
||||
vi.mock("../commands/daemon-install-helpers.js", () => ({
|
||||
@@ -101,7 +122,6 @@ vi.mock("./progress.js", () => ({
|
||||
withProgress: async (_opts: unknown, fn: () => Promise<unknown>) => await fn(),
|
||||
}));
|
||||
|
||||
const { registerDaemonCli } = await import("./daemon-cli.js");
|
||||
let daemonProgram: Command;
|
||||
|
||||
function createDaemonProgram() {
|
||||
@@ -145,7 +165,7 @@ describe("daemon-cli coverage", () => {
|
||||
});
|
||||
|
||||
it("probes gateway status by default", async () => {
|
||||
resetRuntimeCapture();
|
||||
runtimeLogs.length = 0;
|
||||
probeGatewayStatus.mockClear();
|
||||
|
||||
await runDaemonCommand(["daemon", "status"]);
|
||||
@@ -159,7 +179,7 @@ describe("daemon-cli coverage", () => {
|
||||
});
|
||||
|
||||
it("derives probe URL from service args + env (json)", async () => {
|
||||
resetRuntimeCapture();
|
||||
runtimeLogs.length = 0;
|
||||
probeGatewayStatus.mockClear();
|
||||
inspectPortUsage.mockClear();
|
||||
|
||||
@@ -208,7 +228,7 @@ describe("daemon-cli coverage", () => {
|
||||
});
|
||||
|
||||
it("installs the daemon (json output)", async () => {
|
||||
resetRuntimeCapture();
|
||||
runtimeLogs.length = 0;
|
||||
serviceIsLoaded.mockResolvedValueOnce(false);
|
||||
serviceInstall.mockClear();
|
||||
|
||||
@@ -234,7 +254,7 @@ describe("daemon-cli coverage", () => {
|
||||
});
|
||||
|
||||
it("starts and stops daemon (json output)", async () => {
|
||||
resetRuntimeCapture();
|
||||
runtimeLogs.length = 0;
|
||||
serviceRestart.mockClear();
|
||||
serviceStop.mockClear();
|
||||
serviceIsLoaded.mockResolvedValue(true);
|
||||
|
||||
Reference in New Issue
Block a user