| import { beforeEach, describe, expect, it, vi } from "vitest"; | |
| const runCommandWithTimeout = vi.fn(); | |
| vi.mock("../../process/exec.js", () => ({ | |
| runCommandWithTimeout, | |
| })); | |
| const { createGlobalCommandRunner } = await import("./shared.js"); | |
| describe("createGlobalCommandRunner", () => { | |
| beforeEach(() => { | |
| vi.clearAllMocks(); | |
| runCommandWithTimeout.mockResolvedValue({ | |
| stdout: "", | |
| stderr: "", | |
| code: 0, | |
| signal: null, | |
| killed: false, | |
| termination: "exit", | |
| }); | |
| }); | |
| it("forwards argv/options and maps exec result shape", async () => { | |
| runCommandWithTimeout.mockResolvedValueOnce({ | |
| stdout: "out", | |
| stderr: "err", | |
| code: 17, | |
| signal: null, | |
| killed: false, | |
| termination: "exit", | |
| }); | |
| const runCommand = createGlobalCommandRunner(); | |
| const result = await runCommand(["npm", "root", "-g"], { | |
| timeoutMs: 1200, | |
| cwd: "/tmp/openclaw", | |
| env: { OPENCLAW_TEST: "1" }, | |
| }); | |
| expect(runCommandWithTimeout).toHaveBeenCalledWith(["npm", "root", "-g"], { | |
| timeoutMs: 1200, | |
| cwd: "/tmp/openclaw", | |
| env: { OPENCLAW_TEST: "1" }, | |
| }); | |
| expect(result).toEqual({ | |
| stdout: "out", | |
| stderr: "err", | |
| code: 17, | |
| }); | |
| }); | |
| }); | |