chore: establish YCode replication baseline and TODO
This commit is contained in:
commit
6dc59f89ba
1118 files changed
+196002
No files matched your search
@@ -0,0 +1,97 @@
|
||||
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')
|
||||
Reference in new issue
Block a user