18 lines
4.9 KiB
Markdown
18 lines
4.9 KiB
Markdown
FAIL
|
||
|
||
apps/ely-tree/src/recovering.rs:93:清理把预览中的目录作为递归 pathspec 交给 `clean -f -d`,删除范围包含确认前新增的子文件,违反 TREE-13 的危险操作预览,也与 agents.md C13.6 的“预览后新出现的文件不动”声明冲突。独立探针复现:先有 `out/early.txt`,预览得到 `["out/"]`,随后创建 `out/late.txt`,执行确认参数后两个文件都被删除。现有 tests/recovery.rs:87 只覆盖仓库根目录新增文件。修复方向:固定实际删除文件清单,或在写队列中核对目录内容,变化时重新预览并确认;覆盖预览目录内新增文件的测试。
|
||
|
||
apps/ely-tree/src/work.rs:107:`reset --keep` 会重置索引,确认框所承诺的“工作区与暂存的改动保留”与执行结果冲突,独立暂存内容会丢失。独立探针复现:两个提交中 `a.txt` 都为 `base`,把 `staged` 暂存,再把工作区改成 `unstaged`,确认移回前一提交;执行成功后索引恢复成 `base`,工作区仍为 `unstaged`,原先独立暂存的 `staged` 消失。现有移动测试只检查未暂存改动。修复方向:采用能够同时保留暂存和未暂存差异的恢复流程,遇到冲突先拒绝;用独立 Git 命令核对移动前后的索引内容和工作区内容。
|
||
|
||
apps/ely-tree/src/work.rs:207:移动操作只核对 HEAD 的 OID,`recovering.rs:228` 构造写操作时丢掉了预览中的分支身份,确认可能移动另一条分支,违反 TREE-13 的预览要求。独立探针复现:`main` 和 `other` 指向同一个第二提交,在 `main` 预览移回第一提交;确认前从终端切到 `other`,原操作成功,`other` 被移回而 `main` 留在第二提交。修复方向:携带完整分支引用或游离状态,在写队列执行前同时核对身份与 OID,变化后重新预览确认;覆盖同 OID 分支切换以及转为游离 HEAD 的测试。
|
||
|
||
apps/ely-tree/src/recover.rs:42:引用日志的时间取 `%ct`,这是提交的 committer 时间;界面将它标为“移动于”,导致 checkout、reset 等移动的时间错误。独立探针复现:提交的 committer 时间设为 2000-01-01,当前执行 checkout;独立 Git 的 `reflog show -1 --date=raw --format=%gD` 给出 `HEAD@{1791363853 -0400}`,`recover::reflog` 回报的时间仍为 `946684800`。修复方向:读取 reflog 记录自身的事件时间,保留位置、原因与该事件的对应关系;增加提交时间与移动时间不同的测试。
|
||
|
||
apps/ely-tree/src/side_places.rs:284:引用日志选择仅以提交 OID 标识;`places_pane.rs:126` 也按 OID 取第一条记录,同一提交的多次移动会一起被选中,并显示另一条记录的位置、原因和时间。独立探针复现:在初始提交创建 `other` 后切过去,`HEAD@{0}` 的 checkout 和 `HEAD@{1}` 的初始提交具有同一 OID;点击初始提交记录时两行都满足 selected,详情取最新 checkout 的原因。修复方向:让选择保留具体 reflog 记录身份,详情使用所选记录;提交详情读取继续使用该记录的 OID,刷新时核对记录身份。增加同一 OID 多条日志的选择测试。
|
||
|
||
apps/ely-tree/src/tools.rs:46:编辑器配置只验证 JSON 语法,错误类型经 `as_str()` 静默变成“尚未选择编辑器”,随后允许覆盖损坏文件,违反错误暴露规则及 agents.md C13.6 的损坏配置保护声明。独立探针复现:`tools.json` 写入 `{"editor":42}`,`Tools::load` 得到 `editor=None`、`broken=None`;再次选择编辑器后原文件被覆盖成新配置。现有测试仅使用非法 JSON 文本。修复方向:验证配置结构和字段类型,结构错误进入 broken 状态并保留原文件;覆盖合法 JSON 中错误字段类型的测试。
|
||
|
||
apps/ely-tree/src/tools.rs:160:macOS 的 `.app` 启动只检查 `open` 是否成功 spawn,启动助手随后返回的错误被丢掉,GUI 无法显示编辑器打开失败。独立探针复现:已保存的编辑器为随后删除的 `DeletedEditor.app`;实际 `open -a <path> <file>` 成功 spawn,随后退出 1 并报告应用不存在,当前错误分支始终跳过。修复方向:在后台收集启动助手的退出状态与诊断,将失败显示在界面;增加已保存 app 被删除或失效后的打开测试。
|
||
|
||
apps/ely-tree/src/work.rs:222:锁竞争识别只匹配 `.lock': File exists`,真实的配置锁失败进入普通错误提示,缺少 C13.6 声明的锁对话框和原操作重试。独立探针复现:保留 `.git/config.lock` 后执行身份设置对应的 `Write::Config`;随附 Git 返回 `git config (exit status: 255): error: could not lock config file .git/config: File exists`,`locked` 判定为 false。现有锁测试仅覆盖 index.lock。修复方向:覆盖各写命令实际的锁失败诊断,统一进入保留原写操作的锁重试流程;增加 config.lock 竞争、移除锁后重试和锁文件保留的测试。
|