1.9 KiB
FAIL
crates/ely-files/src/save.rs:307 — [P1] 能力探测使用传入路径的父目录,实际保存却在 resolved(path) 指向的目录替换文件;经本地符号链接保存网络盘文件会跳过旧版本备份,违反 §6.1。macOS 隔离探针仅对目标目录的 statfs 清除 MNT_LOCAL:直接保存目标返回备份且保留旧内容;经本地目录中的符号链接保存同类目标时,atomic_capable(alias) 返回 true,save 返回 backup=None,会话进入 Saved,目标旧内容消失。修复方向:能力探测、备份与替换统一使用解析后的实际目标,并增加本地链接指向受限卷的回归测试。
crates/ely-files/src/save.rs:130 — [P2] 备份名在追加唯一后缀后整体截断,截掉区分候选名的部分,导致合法长文件名的保存卡在碰撞循环,违反 FILE-09。实测 255 个 x 的文件首次调用 save_with_backup 就持续尝试原文件名,3 秒超时后终止;250 个 x 加 .md 的文件前十次保存成功,第十一次生成的名称又与 -1 候选相同,同样超时。现有长文件名测试仅保存一次,105 次测试仅使用短文件名。修复方向:按完整唯一后缀预留长度,再截断原名称,保证每次碰撞产生新候选;补充满长名称首次保存和长名称连续保存超过十次的回归测试。
crates/ely-files/src/save.rs:219 — [P2] 附件重名候选也在追加计数器后整体截断,长 stem 会吞掉计数器,使重复导入持续检查同一已存在路径,违反 FILE-09。实测无扩展名、名称为 255 个 x 的附件首次导入成功,第二次导入卡在 while target.try_exists(),3 秒超时后终止;源文件和目录均可正常读写。现有长扩展名测试通过,但没有覆盖满长 stem。修复方向:为计数器保留长度预算,使截断后的候选仍随计数器变化,并补充满长无扩展名附件的重复导入测试。