import assert from 'node:assert/strict' import { diffSidesFromCurrentFile, diffSidesFromUnifiedDiff, parseDiffContent, resolveCachedDiffSides } from '../src/renderer/src/workbuddy/artifacts/diff-content' const diff = [ 'diff --git a/file.txt b/file.txt', 'index 1234567..abcdef0 100644', '--- a/file.txt', '+++ b/file.txt', '@@ -1,3 +1,3 @@', ' before', '-old value', '+new value', ' after' ].join('\n') assert.deepEqual(parseDiffContent(diff), { original: 'before\nold value\nafter', modified: 'before\nnew value\nafter' }) assert.deepEqual(parseDiffContent(undefined), { original: '', modified: '' }) assert.equal(resolveCachedDiffSides(undefined, diff), undefined) assert.deepEqual(diffSidesFromCurrentFile('current file', 'added'), { original: '', modified: 'current file' }) assert.deepEqual(diffSidesFromCurrentFile('removed file', 'deleted'), { original: 'removed file', modified: '' }) assert.deepEqual(resolveCachedDiffSides('current file', undefined, 'added'), { original: '', modified: 'current file' }) assert.deepEqual(resolveCachedDiffSides('removed file', undefined, 'deleted'), { original: 'removed file', modified: '' }) const cached = diffSidesFromUnifiedDiff('before\nnew value\nafter', diff) assert.deepEqual(cached, { original: 'before\nold value\nafter', modified: 'before\nnew value\nafter', exactDiff: diff }) assert.deepEqual(resolveCachedDiffSides('before\nnew value\nafter', diff), cached) const bareHunk = '@@ -1 +1 @@\n-old\n+new' assert.deepEqual(diffSidesFromUnifiedDiff('new', bareHunk), { original: 'old', modified: 'new', exactDiff: bareHunk }) const shiftedHunk = '@@ -1 +1 @@\n-old\n+new' assert.deepEqual(diffSidesFromUnifiedDiff('prefix\nnew\nsuffix', shiftedHunk), { original: 'prefix\nold\nsuffix', modified: 'prefix\nnew\nsuffix', exactDiff: shiftedHunk }) const multipleHunks = [ '--- a/file.txt', '+++ b/file.txt', '@@ -2,3 +2,3 @@', ' b', '-c', '+C', ' d', '@@ -6,2 +6,2 @@', ' f', '-g', '+G' ].join('\n') assert.equal( diffSidesFromUnifiedDiff('a\nb\nC\nd\ne\nf\nG', multipleHunks).original, 'a\nb\nc\nd\ne\nf\ng' ) assert.equal( diffSidesFromUnifiedDiff('before\r\nnew value\r\nafter\r\n', diff).original, 'before\r\nold value\r\nafter\r\n' ) const noFinalNewline = [ '--- a/file.txt', '+++ b/file.txt', '@@ -1 +1 @@', '-old', '\\ No newline at end of file', '+new', '\\ No newline at end of file' ].join('\n') assert.deepEqual(diffSidesFromUnifiedDiff('new', noFinalNewline), { original: 'old', modified: 'new', exactDiff: noFinalNewline }) const mismatchedCache = diffSidesFromUnifiedDiff('unrelated cached content', diff) assert.deepEqual(mismatchedCache, { original: 'before\nold value\nafter', modified: 'unrelated cached content' }) console.log('Artifact diff recovery regression checks passed')