|
@@ -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)
|
|
|
|
|
+ })
|
|
|
|
|
+})
|