fix(memory): stop forcing Windows qmd cmd shims

This commit is contained in:
Peter Steinberger
2026-03-13 03:09:07 +00:00
parent ff2368af57
commit fb9984a774
2 changed files with 17 additions and 21 deletions

View File

@@ -72,4 +72,20 @@ describe("resolveCliSpawnInvocation", () => {
}),
).toThrow(/without shell execution/);
});
it("keeps bare commands bare when no Windows wrapper exists on PATH", () => {
process.env.PATH = originalPath ?? "";
process.env.PATHEXT = ".CMD;.EXE";
const invocation = resolveCliSpawnInvocation({
command: "qmd",
args: ["query", "hello"],
env: process.env,
packageName: "qmd",
});
expect(invocation.command).toBe("qmd");
expect(invocation.argv).toEqual(["query", "hello"]);
expect(invocation.shell).not.toBe(true);
});
});

View File

@@ -1,5 +1,4 @@
import { spawn } from "node:child_process";
import path from "node:path";
import {
materializeWindowsSpawnProgram,
resolveWindowsSpawnProgram,
@@ -12,25 +11,6 @@ export type CliSpawnInvocation = {
windowsHide?: boolean;
};
function resolveWindowsCommandShim(command: string): string {
if (process.platform !== "win32") {
return command;
}
const trimmed = command.trim();
if (!trimmed) {
return command;
}
const ext = path.extname(trimmed).toLowerCase();
if (ext === ".cmd" || ext === ".exe" || ext === ".bat") {
return command;
}
const base = path.basename(trimmed).toLowerCase();
if (base === "qmd" || base === "mcporter") {
return `${trimmed}.cmd`;
}
return command;
}
export function resolveCliSpawnInvocation(params: {
command: string;
args: string[];
@@ -38,7 +18,7 @@ export function resolveCliSpawnInvocation(params: {
packageName: string;
}): CliSpawnInvocation {
const program = resolveWindowsSpawnProgram({
command: resolveWindowsCommandShim(params.command),
command: params.command,
platform: process.platform,
env: params.env,
execPath: process.execPath,