2bca0ac9f1
* 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
65 lines
2.5 KiB
TypeScript
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")
|
|
})
|
|
})
|