From 5a413edc8ae6240d12f64cfd26f13357f63ac082 Mon Sep 17 00:00:00 2001 From: Kit Langton Date: Mon, 13 Apr 2026 19:28:21 -0400 Subject: [PATCH] test(shell-job): make shell command fixtures portable --- packages/opencode/test/shell-job/shell-job.test.ts | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/packages/opencode/test/shell-job/shell-job.test.ts b/packages/opencode/test/shell-job/shell-job.test.ts index 002eed9080..04d4b6a8ee 100644 --- a/packages/opencode/test/shell-job/shell-job.test.ts +++ b/packages/opencode/test/shell-job/shell-job.test.ts @@ -4,6 +4,7 @@ import { Effect, Layer } from "effect" import * as CrossSpawnSpawner from "../../src/effect/cross-spawn-spawner" import { AppFileSystem } from "../../src/filesystem" import { Instance } from "../../src/project/instance" +import { Shell } from "../../src/shell/shell" import { ShellJob } from "../../src/shell-job" import { provideTmpdirInstance } from "../fixture/fixture" import { testEffect } from "../lib/effect" @@ -15,7 +16,15 @@ const it = testEffect( ), ) -const node = (script: string) => `${JSON.stringify(process.execPath)} -e ${JSON.stringify(script)}` +const quote = (text: string) => `"${text}"` +const squote = (text: string) => `'${text}'` +const shell = () => Shell.name(Shell.acceptable()) +const evalarg = (text: string) => (shell() === "cmd" ? quote(text) : squote(text)) +const node = (script: string) => { + const text = `${quote(process.execPath.replaceAll("\\", "/"))} -e ${evalarg(script)}` + if (shell() === "powershell" || shell() === "pwsh") return `& ${text}` + return text +} const alive = (pid: number) => { try {