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

8 lines
2.1 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:249 — 重载后的旧保存回调直接返回 StaleTicket,新增的 saving 标志持续为 true。隔离测试执行 begin_save()、写盘、外部修改、reload()、旧任务 finish_save()、edit();旧回调返回 StaleTicket,随后 state() 为 Dirty,begin_save() 与 begin_save_overwrite() 均持续返回 Saving,已结束的任务永久阻塞后续保存。现有 a_reload_kills_old_tickets 只断言修订与显示状态,遗漏恢复保存。修复方向:独立跟踪进行中的任务身份,在旧任务结束时释放对应槽位,同时继续拒绝其过期内容确认;补充重载、旧任务结束、再次保存的回归测试。
crates/ely-files/src/session.rs:226 — 加载失败限制仍依赖可被外部事件覆盖的显示状态。隔离测试执行 Session::loading(path)、fail_load()、外部写入、external_modified()、begin_save_overwrite(),实际得到 fingerprint=None 与 Ok(SaveTicket { generation: 0, revision: 0 })。文件内容尚未成功加载,覆盖保存已获准,可将空白或残缺的内存内容写回文件;上一轮任务守卫修复仍遗漏失败加载后的变更事件。修复方向:独立保留加载成功与编辑可用性,所有保存入口持续检查该条件,覆盖确认只解除外部冲突;补充加载失败、外部变更、覆盖保存的拒绝测试。
crates/ely-files/src/session.rs:399 — 实时身份匹配将 file_id(have) 的所有错误转换为 false,静默失去同文件去重。macOS 隔离测试先打开 restricted/doc.md 为 Fresh(0),给它建立可访问的 alias.md 硬链接,再撤销 restricted 目录的访问权限;已登记路径的 metadata 返回 PermissionDenied,is_open(alias.md) 却返回 Ok(false),open(alias.md, false) 返回 Ok(Fresh(1))。同一 inode 形成两个可写会话,违反 §6.1,并吞掉实际文件系统错误。修复方向:匹配流程返回可传播的错误,权限等身份查询失败通过 open()/is_open() 暴露且保持登记不变;补充已登记路径失去访问权限后的硬链接回归测试。