summaryrefslogtreecommitdiffhomepage
path: root/packages/app/src/utils/worktree.test.ts
diff options
context:
space:
mode:
authorAdam <[email protected]>2026-02-06 10:02:31 -0600
committerGitHub <[email protected]>2026-02-06 10:02:31 -0600
commit2c58dd6203df7806f57ef6b29672091cb764e871 (patch)
tree10fca96d3098465b497f78e29de8d0a585c4dac3 /packages/app/src/utils/worktree.test.ts
parenta4bc883595df9ea0f752079519081bc602408553 (diff)
downloadopencode-2c58dd6203df7806f57ef6b29672091cb764e871.tar.gz
opencode-2c58dd6203df7806f57ef6b29672091cb764e871.zip
chore: refactoring and tests, splitting up files (#12495)
Diffstat (limited to 'packages/app/src/utils/worktree.test.ts')
-rw-r--r--packages/app/src/utils/worktree.test.ts46
1 files changed, 46 insertions, 0 deletions
diff --git a/packages/app/src/utils/worktree.test.ts b/packages/app/src/utils/worktree.test.ts
new file mode 100644
index 000000000..8161e7ad8
--- /dev/null
+++ b/packages/app/src/utils/worktree.test.ts
@@ -0,0 +1,46 @@
+import { describe, expect, test } from "bun:test"
+import { Worktree } from "./worktree"
+
+const dir = (name: string) => `/tmp/opencode-worktree-${name}-${crypto.randomUUID()}`
+
+describe("Worktree", () => {
+ test("normalizes trailing slashes", () => {
+ const key = dir("normalize")
+ Worktree.ready(`${key}/`)
+
+ expect(Worktree.get(key)).toEqual({ status: "ready" })
+ })
+
+ test("pending does not overwrite a terminal state", () => {
+ const key = dir("pending")
+ Worktree.failed(key, "boom")
+ Worktree.pending(key)
+
+ expect(Worktree.get(key)).toEqual({ status: "failed", message: "boom" })
+ })
+
+ test("wait resolves shared pending waiter when ready", async () => {
+ const key = dir("wait-ready")
+ Worktree.pending(key)
+
+ const a = Worktree.wait(key)
+ const b = Worktree.wait(`${key}/`)
+
+ expect(a).toBe(b)
+
+ Worktree.ready(key)
+
+ expect(await a).toEqual({ status: "ready" })
+ expect(await b).toEqual({ status: "ready" })
+ })
+
+ test("wait resolves with failure message", async () => {
+ const key = dir("wait-failed")
+ const waiting = Worktree.wait(key)
+
+ Worktree.failed(key, "permission denied")
+
+ expect(await waiting).toEqual({ status: "failed", message: "permission denied" })
+ expect(await Worktree.wait(key)).toEqual({ status: "failed", message: "permission denied" })
+ })
+})