From ce1397cc34c6a571d455e5089bcf33a9b505cd7e Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Tue, 11 Nov 2025 15:14:37 -0500 Subject: [PATCH] core: add test to verify OpenCode doesn't crash when starting in git repositories with no commit history --- .../opencode/test/project/project.test.ts | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 packages/opencode/test/project/project.test.ts 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) + }) +})