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