import { writeFile } from "node:fs/promises" ;
import path from "node:path" ;
import { describe, expect, it } from "vitest" ;
import { createPluginSdkTestHarness } from "./test-helpers.js" ;
import { materializeWindowsSpawnProgram, resolveWindowsSpawnProgram } from "./windows-spawn.js" ;
const { createTempDir } = createPluginSdkTestHarness({
cleanup: {
maxRetries: 8 ,
retryDelay: 8 ,
},
});
describe("resolveWindowsSpawnProgram" , () => {
it("fails closed by default for unresolved windows wrappers" , async () => {
const dir = await createTempDir("openclaw-windows-spawn-test-" );
const shimPath = path.join(dir, "wrapper.cmd" );
await writeFile(shimPath, "@ECHO off\r\necho wrapper\r\n" , "utf8" );
expect(() =>
resolveWindowsSpawnProgram({
command: shimPath,
platform: "win32" ,
env: { PATH: dir, PATHEXT: ".CMD;.EXE;.BAT" },
execPath: "C:\\node\\node.exe" ,
}),
).toThrow(/without shell execution/);
});
it("only returns shell fallback when explicitly opted in" , async () => {
const dir = await createTempDir("openclaw-windows-spawn-test-" );
const shimPath = path.join(dir, "wrapper.cmd" );
await writeFile(shimPath, "@ECHO off\r\necho wrapper\r\n" , "utf8" );
const resolved = resolveWindowsSpawnProgram({
command: shimPath,
platform: "win32" ,
env: { PATH: dir, PATHEXT: ".CMD;.EXE;.BAT" },
execPath: "C:\\node\\node.exe" ,
allowShellFallback: true ,
});
const invocation = materializeWindowsSpawnProgram(resolved, ["--cwd" , "C:\\safe & calc.exe" ]);
expect(invocation).toEqual({
command: shimPath,
argv: ["--cwd" , "C:\\safe & calc.exe" ],
resolution: "shell-fallback" ,
shell: true ,
windowsHide: undefined,
});
});
});
Messung V0.5 in Prozent C=99 H=94 G=96
¤ Dauer der Verarbeitung: 0.19 Sekunden
(vorverarbeitet am 2026-06-10)
¤
*© Formatika GbR, Deutschland