|
|
@@ -9,6 +9,7 @@ import { Global } from "../../src/global"
|
|
|
import { Filesystem } from "../../src/util/filesystem"
|
|
|
|
|
|
const managedConfigDir = process.env.OPENCODE_TEST_MANAGED_CONFIG_DIR!
|
|
|
+const wintest = process.platform === "win32" ? test : test.skip
|
|
|
|
|
|
beforeEach(async () => {
|
|
|
await Config.invalidate(true)
|
|
|
@@ -441,6 +442,53 @@ test("merges keybind overrides across precedence layers", async () => {
|
|
|
})
|
|
|
})
|
|
|
|
|
|
+wintest("defaults Ctrl+Z to input undo on Windows", async () => {
|
|
|
+ await using tmp = await tmpdir()
|
|
|
+
|
|
|
+ await Instance.provide({
|
|
|
+ directory: tmp.path,
|
|
|
+ fn: async () => {
|
|
|
+ const config = await TuiConfig.get()
|
|
|
+ expect(config.keybinds?.terminal_suspend).toBe("none")
|
|
|
+ expect(config.keybinds?.input_undo).toBe("ctrl+z,ctrl+-,super+z")
|
|
|
+ },
|
|
|
+ })
|
|
|
+})
|
|
|
+
|
|
|
+wintest("keeps explicit input undo overrides on Windows", async () => {
|
|
|
+ await using tmp = await tmpdir({
|
|
|
+ init: async (dir) => {
|
|
|
+ await Bun.write(path.join(dir, "tui.json"), JSON.stringify({ keybinds: { input_undo: "ctrl+y" } }))
|
|
|
+ },
|
|
|
+ })
|
|
|
+
|
|
|
+ await Instance.provide({
|
|
|
+ directory: tmp.path,
|
|
|
+ fn: async () => {
|
|
|
+ const config = await TuiConfig.get()
|
|
|
+ expect(config.keybinds?.terminal_suspend).toBe("none")
|
|
|
+ expect(config.keybinds?.input_undo).toBe("ctrl+y")
|
|
|
+ },
|
|
|
+ })
|
|
|
+})
|
|
|
+
|
|
|
+wintest("ignores terminal suspend bindings on Windows", async () => {
|
|
|
+ await using tmp = await tmpdir({
|
|
|
+ init: async (dir) => {
|
|
|
+ await Bun.write(path.join(dir, "tui.json"), JSON.stringify({ keybinds: { terminal_suspend: "alt+z" } }))
|
|
|
+ },
|
|
|
+ })
|
|
|
+
|
|
|
+ await Instance.provide({
|
|
|
+ directory: tmp.path,
|
|
|
+ fn: async () => {
|
|
|
+ const config = await TuiConfig.get()
|
|
|
+ expect(config.keybinds?.terminal_suspend).toBe("none")
|
|
|
+ expect(config.keybinds?.input_undo).toBe("ctrl+z,ctrl+-,super+z")
|
|
|
+ },
|
|
|
+ })
|
|
|
+})
|
|
|
+
|
|
|
test("OPENCODE_TUI_CONFIG provides settings when no project config exists", async () => {
|
|
|
await using tmp = await tmpdir({
|
|
|
init: async (dir) => {
|