fix: v0.10.4 快照对照对称防呆收官、搜索高亮重定位、快照保存中断与TB档 - 快照自身truncated拦截加载(与保存侧/当前侧对称的三侧防对照误报收官,截断快照缺失文件不再误报新文件)、切选项/换文件重算后搜索计数与active高亮自动钳制重定位(rows重建行id重新编号不再脱节,命中归零清空高亮)、保存世代号作废在途快照保存(退出文件夹对比不再在单文件空态弹保存对话框,遮罩即时复位,0.10.2按钮防抖与遮罩不拦截交互设计不变)、fmtSize补TB档(TB级文件不再显示1024.0GB,0.10.3档位延续),新增5单测与1条E2E(639单测+E2E 30全过覆盖率98.16/93.5/94.04/98.16),文档四件套同步
This commit is contained in:
@@ -702,6 +702,48 @@ test.describe('文件夹对比(主进程真实扫描链路)', () => {
|
||||
await removeTmpDir(root)
|
||||
}
|
||||
})
|
||||
|
||||
test('加载自身截断的快照被拦截(手工构造快照的对称防呆,0.10.4)', async () => {
|
||||
const root = await makeTmpDir('difflens-e2e-snaptrunc-')
|
||||
try {
|
||||
const leftDir = join(root, 'left')
|
||||
const rightDir = join(root, 'right')
|
||||
const { mkdir, writeFile: wf } = await import('fs/promises')
|
||||
await mkdir(leftDir, { recursive: true })
|
||||
await mkdir(rightDir, { recursive: true })
|
||||
await wf(join(leftDir, 'same.txt'), 'identical')
|
||||
await wf(join(rightDir, 'same.txt'), 'identical')
|
||||
|
||||
// 手工构造截断快照(自家保存链路在截断时已拦截,此形态仅来自外部):
|
||||
// 截断快照缺失的文件会被全部误报为"新文件",加载时须拦截
|
||||
const snap = {
|
||||
version: 2,
|
||||
leftDir,
|
||||
rightDir,
|
||||
semantic: true,
|
||||
truncated: true,
|
||||
total: 9999,
|
||||
entries: [{ rel: 'same.txt', status: 'same', leftSize: 9, rightSize: 9 }],
|
||||
savedAt: Date.now()
|
||||
}
|
||||
const snapPath = join(root, 'truncated-snapshot.json')
|
||||
await wf(snapPath, JSON.stringify(snap), 'utf-8')
|
||||
|
||||
const { app, window } = await launchApp()
|
||||
// 对话框调用序:folder:pick 左 → folder:pick 右 → snapshot:read 快照
|
||||
await stubOpenDialogSeq(app, [[leftDir], [rightDir], [snapPath]])
|
||||
await window.getByRole('button', { name: '对比文件夹' }).click()
|
||||
await expect(window.getByText('相同 1')).toBeVisible()
|
||||
await window.getByRole('button', { name: '加载快照' }).click()
|
||||
// 拦截提示出现,不进入对照模式
|
||||
await expect(window.getByText(/条目不完整无法对照/)).toBeVisible()
|
||||
await expect(window.getByText(/已加载快照/)).toHaveCount(0)
|
||||
await expect(window.getByRole('button', { name: '退出对照' })).toHaveCount(0)
|
||||
await app.close()
|
||||
} finally {
|
||||
await removeTmpDir(root)
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
test.describe('拖拽导入(真实 Chromium DataTransfer 链路)', () => {
|
||||
|
||||
Reference in New Issue
Block a user