فهرست منبع

core: add test to verify OpenCode doesn't crash when starting in git repositories with no commit history

Dax Raad 10 ماه پیش
والد
کامیت
ce1397cc34
1فایلهای تغییر یافته به همراه40 افزوده شده و 0 حذف شده
  1. 40 0
      packages/opencode/test/project/project.test.ts

+ 40 - 0
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)
+  })
+})