mirror of
https://github.com/stablyai/orca.git
synced 2026-09-27 00:02:37 +00:00
fix(diff): reveal a fully deleted file's hunk from an original-side search
pierreSearchRevealLine returned 0 for a fully deleted file, because it maps a deletion onto a neighbouring new-file line and a fully deleted file has no addition lines. FileDiff.revealLine works in 1-based new-file coordinates -- getHunkAdditionLineRange adds 1 to the side boundary, so a +0,0 hunk is the range [1, 1), not 0. Searching Original for text in a fully deleted file therefore never expanded that hunk in a combined diff, and selection restore hit the same path.
This commit is contained in:
@@ -33,3 +33,17 @@ it('does not feed a pure-deletion line number to revealLine', () => {
|
||||
expect(revealed).toBeGreaterThanOrEqual(hunk.additionStart)
|
||||
expect(revealed).toBeLessThanOrEqual(additionEnd)
|
||||
})
|
||||
|
||||
it('maps a fully deleted file onto the empty new-file hunk start', () => {
|
||||
const diff = buildPierreFileDiff({
|
||||
...input,
|
||||
status: 'deleted',
|
||||
originalContent: `${'keep\n'.repeat(40)}${'drop\n'.repeat(10)}GONE\n${'keep\n'.repeat(40)}old\n`,
|
||||
modifiedContent: ''
|
||||
})
|
||||
expect(diff.additionLines).toHaveLength(0)
|
||||
expect(diff.hunks[0]?.additionStart).toBe(0)
|
||||
expect(diff.hunks[0]?.additionCount).toBe(0)
|
||||
// FileDiff.revealLine uses 1-based new-file ranges; +0,0 becomes [1, 1).
|
||||
expect(pierreSearchRevealLine(diff, 51, 'deletions')).toBe(1)
|
||||
})
|
||||
|
||||
@@ -146,8 +146,8 @@ export function pierreSearchRevealLine(
|
||||
if (side === 'additions') {
|
||||
return lineNumber
|
||||
}
|
||||
// revealLine is new-file only; never pass a pure-deletion old-file number.
|
||||
let modifiedLine = 0
|
||||
// revealLine is new-file only; +0,0 (fully deleted) is range [1, 1), not 0.
|
||||
let modifiedLine = 1
|
||||
let found = false
|
||||
iterateOverDiff({
|
||||
diff,
|
||||
|
||||
Reference in New Issue
Block a user