mirror of
https://github.com/earendil-works/pi.git
synced 2026-09-28 14:13:13 +08:00
31 lines
1.1 KiB
TypeScript
31 lines
1.1 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { createPowerShellTool } from "../src/core/tools/powershell.ts";
|
|
import { getPowerShellConfig, POWERSHELL_ARGS } from "../src/utils/shell.ts";
|
|
|
|
function getTextOutput(result: { content: Array<{ type: string; text?: string }> }): string {
|
|
return result.content
|
|
.filter((content) => content.type === "text")
|
|
.map((content) => content.text ?? "")
|
|
.join("\n");
|
|
}
|
|
|
|
describe("powershell tool", () => {
|
|
it("uses process-local execution policy bypass", () => {
|
|
expect(POWERSHELL_ARGS).toEqual(["-NoProfile", "-NonInteractive", "-ExecutionPolicy", "Bypass", "-Command"]);
|
|
});
|
|
|
|
it.skipIf(process.platform !== "win32")("executes PowerShell commands with UTF-8 output", async () => {
|
|
const config = getPowerShellConfig();
|
|
expect(config.args).toEqual(POWERSHELL_ARGS);
|
|
|
|
const tool = createPowerShellTool(process.cwd());
|
|
const result = await tool.execute("powershell-test", {
|
|
command: "Write-Output 'héllo €'; Get-ExecutionPolicy -Scope Process",
|
|
});
|
|
const output = getTextOutput(result);
|
|
|
|
expect(output).toContain("héllo €");
|
|
expect(output).toContain("Bypass");
|
|
});
|
|
});
|