diff --git a/src/agents/pi-bundle-lsp-runtime.windows-spawn.test.ts b/src/agents/pi-bundle-lsp-runtime.windows-spawn.test.ts index 78b90bc23ad..f5f62777651 100644 --- a/src/agents/pi-bundle-lsp-runtime.windows-spawn.test.ts +++ b/src/agents/pi-bundle-lsp-runtime.windows-spawn.test.ts @@ -59,12 +59,18 @@ describe("spawnLspServerProcess Windows .cmd shim handling", () => { }); const { spawnLspServerProcess } = await import("./pi-bundle-lsp-runtime.js"); - spawnLspServerProcess({ command: "typescript-language-server", args: ["--stdio"], env: configEnv }); + spawnLspServerProcess({ + command: "typescript-language-server", + args: ["--stdio"], + env: configEnv, + }); // Must use structured params so config.env entries are not dropped - expect(sanitizeHostExecEnvMock).toHaveBeenCalledWith( - expect.objectContaining({ baseEnv: process.env, overrides: configEnv }), - ); + const sanitizeParams = sanitizeHostExecEnvMock.mock.calls[0]?.[0] as + | { baseEnv?: NodeJS.ProcessEnv; overrides?: Record } + | undefined; + expect(sanitizeParams?.baseEnv).toBe(process.env); + expect(sanitizeParams?.overrides).toBe(configEnv); }); it("passes sanitized env to resolveWindowsSpawnProgram", async () => { @@ -82,9 +88,11 @@ describe("spawnLspServerProcess Windows .cmd shim handling", () => { const { spawnLspServerProcess } = await import("./pi-bundle-lsp-runtime.js"); spawnLspServerProcess({ command: "typescript-language-server", args: ["--stdio"] }); - expect(resolveWindowsSpawnProgramMock).toHaveBeenCalledWith( - expect.objectContaining({ env: sanitizedEnv, allowShellFallback: true }), - ); + const resolveParams = resolveWindowsSpawnProgramMock.mock.calls[0]?.[0] as + | { env?: Record; allowShellFallback?: boolean } + | undefined; + expect(resolveParams?.env).toBe(sanitizedEnv); + expect(resolveParams?.allowShellFallback).toBe(true); }); it("passes materialized invocation to spawn with the sanitized env", async () => { @@ -102,10 +110,14 @@ describe("spawnLspServerProcess Windows .cmd shim handling", () => { const { spawnLspServerProcess } = await import("./pi-bundle-lsp-runtime.js"); spawnLspServerProcess({ command: "typescript-language-server", args: ["--stdio"] }); - expect(spawnMock).toHaveBeenCalledWith( - "cmd.exe", - ["/c", "typescript-language-server.cmd", "--stdio"], - expect.objectContaining({ env: sanitizedEnv, shell: true, windowsHide: true }), - ); + const spawnCall = spawnMock.mock.calls[0]; + expect(spawnCall?.[0]).toBe("cmd.exe"); + expect(spawnCall?.[1]).toEqual(["/c", "typescript-language-server.cmd", "--stdio"]); + const spawnOptions = spawnCall?.[2] as + | { env?: Record; shell?: boolean; windowsHide?: boolean } + | undefined; + expect(spawnOptions?.env).toBe(sanitizedEnv); + expect(spawnOptions?.shell).toBe(true); + expect(spawnOptions?.windowsHide).toBe(true); }); });