Explorar el Código

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

Dax Raad hace 3 meses
padre
commit
ce1397cc34
Se han modificado 1 ficheros con 40 adiciones y 0 borrados
  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)
+  })
+})