3.9 KiB
FAIL
apps/ely-mark/src/export.rs:256 — PDF 导出将源文件保护参数传为 None,会经符号链接覆盖正在编辑的 Markdown,违反 FILE-06。真窗口复现:打开 t.md,创建 alias.pdf -> t.md,导出 PDF 到 alias.pdf 并确认 Replace;随后 t.md 的文件头变成 %PDF-,应用报告导出成功。修复方向:将来源会话身份带到 PDF 写入阶段,以文件身份核对目标与打开的文档,拒绝覆盖。副本加入身份检查后,相同操作显示错误并保留 # Title 原文。
apps/ely-mark/src/paper.rs:152、apps/ely-mark/src/export.rs:353 — 资源目录与图片文件名直接拼成 URL,保留字符会改变 URL 的含义,破坏 MARK-11 的带资源 HTML。实际调用 write:将引用 a%23b.png 的文档导出为 report#1.html,生成 src="report#1_files/1-a#b.png" 与 href="report#1_files/export.css";浏览器将 # 后的内容作为片段,图片和样式路径均错误。修复方向:对资源 URL 的路径部分做百分号编码,再做 HTML 属性转义。原版复现断言失败;副本编码后断言通过。
apps/ely-mark/src/paper.rs:55 — 图片扫描只识别双引号的 src=",遗漏合法 HTML 图片,破坏 MARK-11 的资源打包。页面实测将 <img src='pic.png'> 原样交给导出;对存在的 pic.png 调用 inline 后仍得到相对引用,且缺图列表为 [];调用资源目录导出也会遗漏该图片。自包含 HTML 移到其他目录后丢图,PDF 的暂存页面也失去图片路径。修复方向:按 HTML 标签和属性语法解析图片来源,覆盖单引号等合法写法,并让遗漏资源进入错误结果。
apps/ely-mark/web/src/render.js:48 — 纯文本输出在转换时丢弃整个 HTML 原文块,导致 MARK-11 输出丢失正文。实际 CEF 页面打开 <div>VISIBLE_RAW_TEXT</div>\n\nEND\n 后请求纯文本,返回结果只有 END;HTML 输出仍包含该可见正文。修复方向:将 HTML 块中的可见文字纳入文本转换,并加入核对实际正文的导出测试。
apps/ely-mark/src/export.rs:324 — HTML 导出忽略渲染结果的 failed 列表,吞掉 Mermaid 解析错误;PDF/打印路径同样遗漏该列表,违反项目错误暴露规则及 §14.2 的语法错误要求。实际 CEF 渲染 graph TD; A --> 返回带行号的解析错误;真窗口 HTML 导出仅留下代码块,应用记录 mark: exported 并显示成功。修复方向:将图表错误及位置传递到所有输出完成路径,向用户显示失败或明确的部分输出提示,并覆盖错误图表场景。
apps/ely-mark/src/export.rs:187 — PDF/打印阶段丢弃 paper::inline 返回的缺图列表,最终以空错误列表报告成功。真窗口打开引用 missing.png 的文档并导出 PDF,CEF 拒绝加载暂存目录中的图片,PDF 只留下图片替代文字,应用仍记录 mark: exported 并显示成功。修复方向:让缺图结果随暂存、打印和最终写入传递,完成时明确报告缺失资源;输出测试应核对缺图提示。
apps/ely-mark/src/vcs.rs:49 — rev-parse 的所有失败均被转换为 Tracked::Outside,吞掉真实 Git 错误。实际创建仓库后将 .git/config 写为 [bad\n,Git 返回配置解析失败,ask 却返回 Outside,界面隐藏 Git 状态和错误。修复方向:识别明确的仓库外结果,其余失败保留 Git 错误并显示 Unknown。原版错误暴露断言失败;副本区分错误后通过。
apps/ely-mark/src/vcs.rs:52 — 对仓库根路径调用 trim(),裁掉合法路径末尾的空格,破坏 MARK-13 的 ElyTree 联动。实际在名为 repo 的目录中创建仓库并打开 t.md,ask 返回的根路径变为 repo;点击状态项会将这个错误目录交给 ElyTree。修复方向:只移除 Git 输出的行结束分隔符,完整保留路径字符。原版路径身份断言失败;副本保留末尾空格后通过。