Files
ElyOffice/tasks/reviews/C14.7-r1.md
T

18 lines
3.9 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
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 输出的行结束分隔符,完整保留路径字符。原版路径身份断言失败;副本保留末尾空格后通过。