






























@@ -59,12 +59,18 @@ describe("spawnLspServerProcess Windows .cmd shim handling", () => {
5959});
60606161const { spawnLspServerProcess } = await import("./pi-bundle-lsp-runtime.js");
62-spawnLspServerProcess({ command: "typescript-language-server", args: ["--stdio"], env: configEnv });
62+spawnLspServerProcess({
63+command: "typescript-language-server",
64+args: ["--stdio"],
65+env: configEnv,
66+});
63676468// Must use structured params so config.env entries are not dropped
65-expect(sanitizeHostExecEnvMock).toHaveBeenCalledWith(
66-expect.objectContaining({ baseEnv: process.env, overrides: configEnv }),
67-);
69+const sanitizeParams = sanitizeHostExecEnvMock.mock.calls[0]?.[0] as
70+| { baseEnv?: NodeJS.ProcessEnv; overrides?: Record<string, string> }
71+| undefined;
72+expect(sanitizeParams?.baseEnv).toBe(process.env);
73+expect(sanitizeParams?.overrides).toBe(configEnv);
6874});
69757076it("passes sanitized env to resolveWindowsSpawnProgram", async () => {
@@ -82,9 +88,11 @@ describe("spawnLspServerProcess Windows .cmd shim handling", () => {
8288const { spawnLspServerProcess } = await import("./pi-bundle-lsp-runtime.js");
8389spawnLspServerProcess({ command: "typescript-language-server", args: ["--stdio"] });
849085-expect(resolveWindowsSpawnProgramMock).toHaveBeenCalledWith(
86-expect.objectContaining({ env: sanitizedEnv, allowShellFallback: true }),
87-);
91+const resolveParams = resolveWindowsSpawnProgramMock.mock.calls[0]?.[0] as
92+| { env?: Record<string, string>; allowShellFallback?: boolean }
93+| undefined;
94+expect(resolveParams?.env).toBe(sanitizedEnv);
95+expect(resolveParams?.allowShellFallback).toBe(true);
8896});
89979098it("passes materialized invocation to spawn with the sanitized env", async () => {
@@ -102,10 +110,14 @@ describe("spawnLspServerProcess Windows .cmd shim handling", () => {
102110const { spawnLspServerProcess } = await import("./pi-bundle-lsp-runtime.js");
103111spawnLspServerProcess({ command: "typescript-language-server", args: ["--stdio"] });
104112105-expect(spawnMock).toHaveBeenCalledWith(
106-"cmd.exe",
107-["/c", "typescript-language-server.cmd", "--stdio"],
108-expect.objectContaining({ env: sanitizedEnv, shell: true, windowsHide: true }),
109-);
113+const spawnCall = spawnMock.mock.calls[0];
114+expect(spawnCall?.[0]).toBe("cmd.exe");
115+expect(spawnCall?.[1]).toEqual(["/c", "typescript-language-server.cmd", "--stdio"]);
116+const spawnOptions = spawnCall?.[2] as
117+| { env?: Record<string, string>; shell?: boolean; windowsHide?: boolean }
118+| undefined;
119+expect(spawnOptions?.env).toBe(sanitizedEnv);
120+expect(spawnOptions?.shell).toBe(true);
121+expect(spawnOptions?.windowsHide).toBe(true);
110122});
111123});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。