diff options
| author | Brendan Allan <[email protected]> | 2026-04-01 15:01:44 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-04-01 07:01:44 +0000 |
| commit | 506dd758187c93bae028fbe7bbfd6ed75772ee1b (patch) | |
| tree | baae9537e0e123d70a639adbbe3cf34b76d41bd0 /packages/desktop-electron/src/main/shell-env.test.ts | |
| parent | c8ecd640220331ce7695d72ea8c618dd8909eab1 (diff) | |
| download | opencode-506dd758187c93bae028fbe7bbfd6ed75772ee1b.tar.gz opencode-506dd758187c93bae028fbe7bbfd6ed75772ee1b.zip | |
electron: port mergeShellEnv logic from tauri (#20192)
Diffstat (limited to 'packages/desktop-electron/src/main/shell-env.test.ts')
| -rw-r--r-- | packages/desktop-electron/src/main/shell-env.test.ts | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/packages/desktop-electron/src/main/shell-env.test.ts b/packages/desktop-electron/src/main/shell-env.test.ts new file mode 100644 index 000000000..cfe88277e --- /dev/null +++ b/packages/desktop-electron/src/main/shell-env.test.ts @@ -0,0 +1,43 @@ +import { describe, expect, test } from "bun:test" + +import { isNushell, mergeShellEnv, parseShellEnv } from "./shell-env" + +describe("shell env", () => { + test("parseShellEnv supports null-delimited pairs", () => { + const env = parseShellEnv(Buffer.from("PATH=/usr/bin:/bin\0FOO=bar=baz\0\0")) + + expect(env.PATH).toBe("/usr/bin:/bin") + expect(env.FOO).toBe("bar=baz") + }) + + test("parseShellEnv ignores invalid entries", () => { + const env = parseShellEnv(Buffer.from("INVALID\0=empty\0OK=1\0")) + + expect(Object.keys(env).length).toBe(1) + expect(env.OK).toBe("1") + }) + + test("mergeShellEnv keeps explicit overrides", () => { + const env = mergeShellEnv( + { + PATH: "/shell/path", + HOME: "/tmp/home", + }, + { + PATH: "/desktop/path", + OPENCODE_CLIENT: "desktop", + }, + ) + + expect(env.PATH).toBe("/desktop/path") + expect(env.HOME).toBe("/tmp/home") + expect(env.OPENCODE_CLIENT).toBe("desktop") + }) + + test("isNushell handles path and binary name", () => { + expect(isNushell("nu")).toBe(true) + expect(isNushell("/opt/homebrew/bin/nu")).toBe(true) + expect(isNushell("C:\\Program Files\\nu.exe")).toBe(true) + expect(isNushell("/bin/zsh")).toBe(false) + }) +}) |
