8 lines
2.1 KiB
Markdown
8 lines
2.1 KiB
Markdown
FAIL
|
||
|
||
crates/ely-files/src/policy.rs:102 — 保存完成只接收 `ok: bool`,成功时无条件清除最新编辑的计时,丢失保存期间新增修订的自动保存任务。复现:已有路径的 Mark 文件在 t=100 编辑 revision 1,t=101 返回 `SaveDue` 并取得保存票据;t=101.2 编辑 revision 2;随后 revision 1 落盘,`Session::finish_save` 正确保留 `Dirty`,但 `PolicyEngine::save_finished(true)` 清空计时,t=102.2 及之后持续返回 `Nothing`,磁盘停留在 revision 1。临时测试结合 `Session` 与 `save_atomic` 实测失败,违反 §6.2 的停输入 1 秒自动保存要求。修复方向:保存完成关联提交时的修订或编辑代次,仅清除该任务已经持久化的编辑;保留较新编辑的截止时间,并加入保存期间继续输入的回归测试。
|
||
|
||
crates/ely-files/src/policy.rs:64 — 无路径期间的编辑被直接丢弃,首次保存成功后 `set_has_path()` 也没有恢复待保存编辑的计时。复现:新建 Mark 文件,revision 1 开始首次显式保存;保存期间输入 revision 2,`edit()` 因 `has_path=false` 跳过记录;revision 1 落盘后设置路径,此时会话仍为 `Dirty`,后续 `tick()` 永远返回 `Nothing`。临时落盘测试实测失败;即使上一项修复为保留较新的计时,此处仍没有可保留的记录。修复方向:无路径期间也记录最新编辑和修订,仅阻止自动提交;首次保存取得路径后,为尚未持久化的编辑继续调度,并覆盖首次保存期间输入的测试。
|
||
|
||
crates/ely-files/src/policy.rs:74 — 防抖使用可回拨的 `SystemTime`,且把负时间差静默替换为零,导致 Mark 的 1 秒自动保存被系统校时推迟。复现:`edit(UNIX_EPOCH + 100s)` 后系统时钟回拨 60 秒,实际已经停止输入 1 秒时调用 `tick(UNIX_EPOCH + 41s)`,实测返回 `Nothing`;直到墙上时间追到 101 秒才返回 `SaveDue`,实际等待约 61 秒。修复方向:用 `Instant` 或可注入的单调时钟计算防抖期限,移除吞掉时间错误的默认值,并增加校时场景的回归覆盖。
|