Files
ElyOffice/tasks/reviews/C06.1-r3.md
T

10 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
FAIL
crates/ely-files/src/session.rs:277 — 外部变更将 Loading/Saving 直接改成 ExternalModified,导致第 213 行新增的覆盖保存守卫失效。隔离测试中,加载期间收到 external_modified() 后,begin_save_overwrite() 返回成功;已有修订 1 保存任务时收到外部变更、编辑到修订 2,也能启动第二个保存任务。进一步按“修订 2 写盘、修订 1 写盘、修订 1 完成回调、修订 2 完成回调”重放,实际得到 state=Saved、revision=2、saved_revision=2,磁盘内容仍为修订 1,违反 FILE-03。修复方向:独立维护加载与进行中的保存任务,外部冲突事件持续保留任务限制,覆盖确认仅解除冲突限制;补充加载中变更和保存交错完成的回归测试。
crates/ely-files/src/session.rs:389 — 文件身份只在已命中登记后的第 392 行刷新,原子替换后仍可能使用过期 inode 去重。隔离测试打开 doc.md 为 Fresh(0),通过临时文件 rename 完成原子保存并调用 finish_save(),再给新文件建立 alias.md 硬链接;is_open(doc.md) 为 true,is_open(alias.md) 为 false,打开 alias.md 得到 Fresh(1),产生两个可写会话,违反 §6.1。另一测试保留旧文件的硬链接后替换 doc.md,打开旧链接反而得到 Focus(0),聚焦了内容与目标均已不同的会话。修复方向:替换后同步更新登记身份,并在硬链接匹配前核实缓存身份与登记路径的当前文件一致;覆盖替换后的新旧硬链接场景。
crates/ely-files/src/session.rs:187 — 上轮外部冲突修复保住了普通保存守卫,但编辑仍将 ExternalModified 改成 Dirty,隐藏尚未解决的外部修改。隔离测试执行外部写入、external_modified()、edit() 后,begin_save() 返回 ExternalModified,state() 却返回 Dirty;冲突标志为私有字段,显示层无法通过会话状态持续显示外部已修改,违反 FILE-02。现有 tests.rs:159 还将 Dirty 写成预期。修复方向:编辑后继续向显示层暴露未解决的外部修改状态,并让回归测试断言冲突提示持续存在。
crates/ely-files/src/session/tests.rs:265 — 上轮要求的 Windows 硬链接回归仍被 #[cfg(unix)] 排除,新增 Windows 文件身份分支缺少硬链接去重的行为测试。Windows 编译会直接删除 hard_links_share_one_session;若该平台重新退化为按路径去重,同一文件两个硬链接生成两个可写会话的缺陷仍缺少检测。本轮 18 项原有单测及 Windows --tests 编译检查均通过,硬链接行为仅在本机 Unix 执行。修复方向:让现有硬链接回归覆盖 Windows,并在 Windows 上运行该测试验证卷与文件身份去重。