Files
Kilo-Org_kilocode/packages/opencode/test/kilocode/worktree-diff-summary.test.ts
T
Marius 2bca0ac9f1 feat(agent-manager): lazy-load worktree diff details (#6945)
* feat(agent-manager): lazy-load worktree diff details

* fix(agent-manager): remove unused diff helper

* fix(agent-manager): preserve summary diff accuracy

* fix(agent-manager): avoid stale diff summary targets

* perf(agent-manager): avoid rescanning diff details
2026-03-12 11:43:38 +01:00

65 lines
2.5 KiB
TypeScript

import { describe, expect, test } from "bun:test"
import { $ } from "bun"
import fs from "node:fs/promises"
import path from "node:path"
import { tmpdir } from "../fixture/fixture"
import { WorktreeDiff } from "../../src/kilocode/review/worktree-diff"
describe("WorktreeDiff summary", () => {
async function setup() {
return await tmpdir({
git: true,
init: async (dir) => {
await Bun.write(path.join(dir, "tracked.txt"), "hello\n")
await $`git add tracked.txt`.cwd(dir).quiet()
await $`git commit -m "init"`.cwd(dir).quiet()
},
})
}
test("summary returns metadata without loading contents", async () => {
await using tmp = await setup()
await Bun.write(path.join(tmp.path, "tracked.txt"), "hello\nworld\n")
await fs.mkdir(path.join(tmp.path, "node_modules", "pkg"), { recursive: true })
await Bun.write(path.join(tmp.path, "node_modules", "pkg", "index.js"), "module.exports = 1\n")
const diffs = await WorktreeDiff.summary({ dir: tmp.path, base: "HEAD" })
const tracked = diffs.find((diff) => diff.file === "tracked.txt")
const generated = diffs.find((diff) => diff.file === "node_modules/pkg/index.js")
expect(tracked).toBeDefined()
expect(tracked?.tracked).toBe(true)
expect(tracked?.summarized).toBe(true)
expect(tracked?.before).toBe("")
expect(tracked?.after).toBe("")
expect(tracked?.status).toBe("modified")
expect(generated).toBeDefined()
expect(generated?.tracked).toBe(false)
expect(generated?.generatedLike).toBe(true)
expect(generated?.summarized).toBe(true)
expect(generated?.before).toBe("")
expect(generated?.after).toBe("")
expect(generated?.additions).toBe(1)
expect(generated?.status).toBe("added")
expect(generated?.stamp?.length).toBeGreaterThan(0)
})
test("detail loads one file and computes untracked line counts", async () => {
await using tmp = await setup()
await fs.mkdir(path.join(tmp.path, "vendor"), { recursive: true })
await Bun.write(path.join(tmp.path, "vendor", "bundle.js"), "one\ntwo\nthree\n")
const diff = await WorktreeDiff.detail({ dir: tmp.path, base: "HEAD", file: "vendor/bundle.js" })
expect(diff).toBeDefined()
expect(diff?.summarized).toBe(false)
expect(diff?.tracked).toBe(false)
expect(diff?.generatedLike).toBe(true)
expect(diff?.before).toBe("")
expect(diff?.after).toBe("one\ntwo\nthree\n")
expect(diff?.additions).toBe(3)
expect(diff?.status).toBe("added")
})
})