mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-10 00:31:22 +00:00
test: speed up cli and command suites
This commit is contained in:
@@ -1,37 +1,53 @@
|
||||
import { Command } from "commander";
|
||||
import { afterEach, beforeAll, describe, expect, it, vi } from "vitest";
|
||||
import { createCliRuntimeCapture } from "./test-runtime-capture.js";
|
||||
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
||||
import { registerDevicesCli } from "./devices-cli.js";
|
||||
|
||||
const { defaultRuntime: runtime, resetRuntimeCapture } = createCliRuntimeCapture();
|
||||
runtime.exit.mockImplementation(() => {});
|
||||
const callGateway = vi.fn();
|
||||
const buildGatewayConnectionDetails = vi.fn(() => ({
|
||||
url: "ws://127.0.0.1:18789",
|
||||
urlSource: "local loopback",
|
||||
message: "",
|
||||
const mocks = vi.hoisted(() => ({
|
||||
runtime: {
|
||||
log: vi.fn(),
|
||||
error: vi.fn(),
|
||||
exit: vi.fn(),
|
||||
writeJson: vi.fn(),
|
||||
},
|
||||
callGateway: vi.fn(),
|
||||
buildGatewayConnectionDetails: vi.fn(() => ({
|
||||
url: "ws://127.0.0.1:18789",
|
||||
urlSource: "local loopback",
|
||||
message: "",
|
||||
})),
|
||||
listDevicePairing: vi.fn(),
|
||||
approveDevicePairing: vi.fn(),
|
||||
summarizeDeviceTokens: vi.fn(),
|
||||
withProgress: vi.fn(async (_opts: unknown, fn: () => Promise<unknown>) => await fn()),
|
||||
}));
|
||||
const listDevicePairing = vi.fn();
|
||||
const approveDevicePairing = vi.fn();
|
||||
const summarizeDeviceTokens = vi.fn();
|
||||
const withProgress = vi.fn(async (_opts: unknown, fn: () => Promise<unknown>) => await fn());
|
||||
vi.mock("../gateway/call.js", () => ({
|
||||
|
||||
const {
|
||||
runtime,
|
||||
callGateway,
|
||||
buildGatewayConnectionDetails,
|
||||
}));
|
||||
|
||||
vi.mock("./progress.js", () => ({
|
||||
withProgress,
|
||||
}));
|
||||
|
||||
vi.mock("../infra/device-pairing.js", () => ({
|
||||
listDevicePairing,
|
||||
approveDevicePairing,
|
||||
summarizeDeviceTokens,
|
||||
withProgress,
|
||||
} = mocks;
|
||||
|
||||
vi.mock("../gateway/call.js", () => ({
|
||||
callGateway: mocks.callGateway,
|
||||
buildGatewayConnectionDetails: mocks.buildGatewayConnectionDetails,
|
||||
}));
|
||||
|
||||
vi.mock("../runtime.js", async (importOriginal) => ({
|
||||
...(await importOriginal<typeof import("../runtime.js")>()),
|
||||
defaultRuntime: runtime,
|
||||
vi.mock("./progress.js", () => ({
|
||||
withProgress: mocks.withProgress,
|
||||
}));
|
||||
|
||||
vi.mock("../infra/device-pairing.js", () => ({
|
||||
listDevicePairing: mocks.listDevicePairing,
|
||||
approveDevicePairing: mocks.approveDevicePairing,
|
||||
summarizeDeviceTokens: mocks.summarizeDeviceTokens,
|
||||
}));
|
||||
|
||||
vi.mock("../runtime.js", () => ({
|
||||
defaultRuntime: mocks.runtime,
|
||||
writeRuntimeJson: (
|
||||
targetRuntime: { log: (...args: unknown[]) => void },
|
||||
value: unknown,
|
||||
@@ -39,12 +55,6 @@ vi.mock("../runtime.js", async (importOriginal) => ({
|
||||
) => targetRuntime.log(JSON.stringify(value, null, space > 0 ? space : undefined)),
|
||||
}));
|
||||
|
||||
let registerDevicesCli: typeof import("./devices-cli.js").registerDevicesCli;
|
||||
|
||||
beforeAll(async () => {
|
||||
({ registerDevicesCli } = await import("./devices-cli.js"));
|
||||
});
|
||||
|
||||
async function runDevicesApprove(argv: string[]) {
|
||||
await runDevicesCommand(["approve", ...argv]);
|
||||
}
|
||||
@@ -321,9 +331,12 @@ describe("devices cli list", () => {
|
||||
});
|
||||
});
|
||||
|
||||
beforeEach(() => {
|
||||
vi.clearAllMocks();
|
||||
runtime.exit.mockImplementation(() => {});
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
resetRuntimeCapture();
|
||||
callGateway.mockClear();
|
||||
buildGatewayConnectionDetails.mockClear();
|
||||
buildGatewayConnectionDetails.mockReturnValue({
|
||||
url: "ws://127.0.0.1:18789",
|
||||
|
||||
Reference in New Issue
Block a user