summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--packages/opencode/test/project/project.test.ts40
1 files changed, 40 insertions, 0 deletions
diff --git a/packages/opencode/test/project/project.test.ts b/packages/opencode/test/project/project.test.ts
new file mode 100644
index 000000000..8e53c5322
--- /dev/null
+++ b/packages/opencode/test/project/project.test.ts
@@ -0,0 +1,40 @@
+import { describe, expect, test } from "bun:test"
+import { Project } from "../../src/project/project"
+import { Log } from "../../src/util/log"
+import { $ } from "bun"
+import path from "path"
+import { tmpdir } from "../fixture/fixture"
+
+Log.init({ print: false })
+
+describe("Project.fromDirectory", () => {
+ test("should handle git repository with no commits", async () => {
+ await using tmp = await tmpdir()
+ await $`git init`.cwd(tmp.path).quiet()
+
+ const project = await Project.fromDirectory(tmp.path)
+
+ expect(project).toBeDefined()
+ expect(project.id).toBe("global")
+ expect(project.worktree).toBe("/")
+
+ const opencodeFile = path.join(tmp.path, ".git", "opencode")
+ const fileExists = await Bun.file(opencodeFile).exists()
+ expect(fileExists).toBe(false)
+ })
+
+ test("should handle git repository with commits", async () => {
+ await using tmp = await tmpdir({ git: true })
+
+ const project = await Project.fromDirectory(tmp.path)
+
+ expect(project).toBeDefined()
+ expect(project.id).not.toBe("global")
+ expect(project.vcs).toBe("git")
+ expect(project.worktree).toBe(tmp.path)
+
+ const opencodeFile = path.join(tmp.path, ".git", "opencode")
+ const fileExists = await Bun.file(opencodeFile).exists()
+ expect(fileExists).toBe(true)
+ })
+})