Files
Kilo-Org_kilocode/packages/opencode/test/kilocode/shell/shell.test.ts
T
2026-06-12 09:40:39 -03:00

32 lines
1.3 KiB
TypeScript

import { describe, expect, test } from "bun:test"
import { Buffer } from "node:buffer"
import * as PowerShell from "@/kilocode/shell/shell"
import { Shell } from "@/shell/shell"
const command = `Write-Output "こんにちは 😀"; Write-Output '$value'; Write-Output \`tick\`
Write-Output "done"`
function script(args: string[]) {
return Buffer.from(args[4], "base64").toString("utf16le")
}
describe("PowerShell arguments", () => {
test("transports commands through UTF-8 inside EncodedCommand", () => {
const args = PowerShell.args(command)
const value = script(args)
const payload = value.match(/FromBase64String\('([^']+)'\)/)?.[1]
expect(args.slice(0, 4)).toEqual(["-NoLogo", "-NoProfile", "-NonInteractive", "-EncodedCommand"])
expect(args).toHaveLength(5)
expect(value).toContain("[Console]::InputEncoding = [System.Text.UTF8Encoding]::new($false)")
expect(value).toContain("[Console]::OutputEncoding = [System.Text.UTF8Encoding]::new($false)")
expect(value).toContain("$OutputEncoding = [Console]::OutputEncoding")
expect(payload).toBeDefined()
expect(Buffer.from(payload!, "base64").toString("utf8")).toBe(command)
})
test.each(["powershell", "pwsh"])("routes %s through the Kilo argument builder", (shell) => {
expect(Shell.args(shell, command, "/tmp")).toEqual(PowerShell.args(command))
})
})