60 lines
1.5 KiB
TypeScript
60 lines
1.5 KiB
TypeScript
import fs from "node:fs";
|
|
import os from "node:os";
|
|
import path from "node:path";
|
|
|
|
export function makePathEnv(binDir: string): NodeJS.ProcessEnv {
|
|
if (process.platform !== "win32") {
|
|
return { PATH: binDir };
|
|
}
|
|
return { PATH: binDir, PATHEXT: ".EXE;.CMD;.BAT;.COM" };
|
|
}
|
|
|
|
export function makeTempDir(): string {
|
|
return fs.mkdtempSync(path.join(os.tmpdir(), "openclaw-exec-approvals-"));
|
|
}
|
|
|
|
export type ShellParserParityFixtureCase = {
|
|
id: string;
|
|
command: string;
|
|
ok: boolean;
|
|
executables: string[];
|
|
};
|
|
|
|
type ShellParserParityFixture = {
|
|
cases: ShellParserParityFixtureCase[];
|
|
};
|
|
|
|
export type WrapperResolutionParityFixtureCase = {
|
|
id: string;
|
|
argv: string[];
|
|
expectedRawExecutable: string | null;
|
|
};
|
|
|
|
type WrapperResolutionParityFixture = {
|
|
cases: WrapperResolutionParityFixtureCase[];
|
|
};
|
|
|
|
export function loadShellParserParityFixtureCases(): ShellParserParityFixtureCase[] {
|
|
const fixturePath = path.join(
|
|
process.cwd(),
|
|
"test",
|
|
"fixtures",
|
|
"exec-allowlist-shell-parser-parity.json",
|
|
);
|
|
const fixture = JSON.parse(fs.readFileSync(fixturePath, "utf8")) as ShellParserParityFixture;
|
|
return fixture.cases;
|
|
}
|
|
|
|
export function loadWrapperResolutionParityFixtureCases(): WrapperResolutionParityFixtureCase[] {
|
|
const fixturePath = path.join(
|
|
process.cwd(),
|
|
"test",
|
|
"fixtures",
|
|
"exec-wrapper-resolution-parity.json",
|
|
);
|
|
const fixture = JSON.parse(
|
|
fs.readFileSync(fixturePath, "utf8"),
|
|
) as WrapperResolutionParityFixture;
|
|
return fixture.cases;
|
|
}
|