From 536e30c5d0bd9223aff7056dd9637ada1c4d405b Mon Sep 17 00:00:00 2001 From: bendtherules Date: Fri, 20 Mar 2026 13:21:51 +0530 Subject: [PATCH] test: add session name sanitization when fetching worktrees --- tests/multi-model.test.ts | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tests/multi-model.test.ts b/tests/multi-model.test.ts index 6e5ad2a..632e043 100644 --- a/tests/multi-model.test.ts +++ b/tests/multi-model.test.ts @@ -681,6 +681,22 @@ describe("core utils", () => { expect(worktrees[0]?.branch).toBe("opencode/my-session/gpt-5.2"); }); + test("sanitizes session name when filtering worktrees", async () => { + spyOn(os, "homedir").mockReturnValue("/home/user"); + // The worktree path uses the sanitized version "my-session" + mockCommandResponses["git worktree list --porcelain"] = { + ok: true, + stdout: "worktree /home/user/.local/share/opencode/multi-model/my-session/gpt-5.2\nbranch refs/heads/opencode/my-session/gpt-5.2", + stderr: "", + }; + + // Pass unsanitized session name with spaces and special chars + const worktrees = await getWorktreesForSession("my session!"); + // Should still find the worktree because it sanitizes internally + expect(worktrees.length).toBe(1); + expect(worktrees[0]?.path).toBe("/home/user/.local/share/opencode/multi-model/my-session/gpt-5.2"); + }); + test("returns empty array when no matching worktrees", async () => { spyOn(os, "homedir").mockReturnValue("/home/user"); mockCommandResponses["git worktree list --porcelain"] = {