fix(hashline-edit): limit diff context to 3 lines to prevent oversized hunks

Closes #2051
This commit is contained in:
YeonGyu-Kim
2026-02-26 20:57:47 +09:00
parent 685b8023dd
commit a3169c9287
2 changed files with 18 additions and 1 deletions

View File

@@ -41,6 +41,23 @@ describe("generateUnifiedDiff", () => {
expect(diff).toContain(" line 13")
})
it("limits each hunk to three context lines", () => {
//#given
const oldContent = createNumberedLines(20)
const newLines = oldContent.split("\n")
newLines[9] = "line 10 updated"
const newContent = newLines.join("\n")
//#when
const diff = generateUnifiedDiff(oldContent, newContent, "sample.txt")
//#then
expect(diff).toContain(" line 7")
expect(diff).toContain(" line 13")
expect(diff).not.toContain(" line 6")
expect(diff).not.toContain(" line 14")
})
it("returns a diff string for identical content", () => {
//#given
const oldContent = "alpha\nbeta\ngamma"

View File

@@ -16,7 +16,7 @@ export function toHashlineContent(content: string): string {
}
export function generateUnifiedDiff(oldContent: string, newContent: string, filePath: string): string {
return createTwoFilesPatch(filePath, filePath, oldContent, newContent)
return createTwoFilesPatch(filePath, filePath, oldContent, newContent, undefined, undefined, { context: 3 })
}
export function countLineDiffs(oldContent: string, newContent: string): { additions: number; deletions: number } {