test: tighten lsp spawn assertions

This commit is contained in:
Peter Steinberger
2026-05-09 16:36:33 +01:00
parent 78099d2820
commit 8d9a108e1a

View File

@@ -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<string, string> }
| 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<string, string>; 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<string, string>; shell?: boolean; windowsHide?: boolean }
| undefined;
expect(spawnOptions?.env).toBe(sanitizedEnv);
expect(spawnOptions?.shell).toBe(true);
expect(spawnOptions?.windowsHide).toBe(true);
});
});