Skip to content

Commit 871dc21

Browse files
committed
fix(core): normalize line endings in diff context snippets
1 parent 2b13296 commit 871dc21

2 files changed

Lines changed: 10 additions & 1 deletion

File tree

packages/core/src/tools/diff-utils.test.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,4 +74,13 @@ describe('getDiffContextSnippet', () => {
7474
'...\n9\nchanged\n11\n...',
7575
);
7676
});
77+
78+
it('should keep line indexes consistent for standalone CR line endings', () => {
79+
const original = ['1', '2', '3', '4'].join('\r');
80+
const modified = ['1', 'changed', '3', '4'].join('\r');
81+
82+
expect(getDiffContextSnippet(original, modified, 1)).toBe(
83+
'1\nchanged\n3\n...',
84+
);
85+
});
7786
});

packages/core/src/tools/diff-utils.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ export function getDiffContextSnippet(
2323
const normalizedOriginal = originalContent.replace(/\r\n?/g, '\n');
2424
const normalizedNew = newContent.replace(/\r\n?/g, '\n');
2525
const changes = Diff.diffLines(normalizedOriginal, normalizedNew);
26-
const newLines = newContent.split(/\r?\n/);
26+
const newLines = normalizedNew.split('\n');
2727
const ranges: Array<{ start: number; end: number }> = [];
2828
let newLineIdx = 0;
2929

0 commit comments

Comments
 (0)