import { describe, expect, it, vi } from "vitest"; const { spawnAndCollectMock } = vi.hoisted(() => ({ spawnAndCollectMock: vi.fn(), })); vi.mock("./process.js", () => ({ spawnAndCollect: spawnAndCollectMock, })); import { __testing, resolveAcpxAgentCommand } from "./mcp-agent-command.js"; describe("resolveAcpxAgentCommand", () => { it("threads stripProviderAuthEnvVars through the config show probe", async () => { spawnAndCollectMock.mockResolvedValueOnce({ stdout: JSON.stringify({ agents: { codex: { command: "custom-codex", }, }, }), stderr: "", code: 0, error: null, }); const command = await resolveAcpxAgentCommand({ acpxCommand: "/plugin/node_modules/.bin/acpx", cwd: "/plugin", agent: "codex", stripProviderAuthEnvVars: true, }); expect(command).toBe("custom-codex"); expect(spawnAndCollectMock).toHaveBeenCalledWith( { command: "/plugin/node_modules/.bin/acpx", args: ["--cwd", "/plugin", "config", "show"], cwd: "/plugin", stripProviderAuthEnvVars: true, }, undefined, ); }); }); describe("buildMcpProxyAgentCommand", () => { it("escapes Windows-style proxy paths without double-escaping backslashes", () => { const quoted = __testing.quoteCommandPart( "C:\\repo\\extensions\\acpx\\src\\runtime-internals\\mcp-proxy.mjs", ); expect(quoted).toBe( '"C:\\\\repo\\\\extensions\\\\acpx\\\\src\\\\runtime-internals\\\\mcp-proxy.mjs"', ); expect(quoted).not.toContain("\\\\\\"); }); });