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