Skip to content

[test] CI 关键脚本零测试覆盖:contributors / slug-map / escape-angles 补单测 #379

Description

@Mira190

背景

全仓只有 5 个测试文件(proxy-matcher / url-safety / activity-events / seo-description / json-ld)。而每次 build 都在跑、坏了会静默污染数据的三个脚本零覆盖:

  • scripts/backfill-contributors.mjs —— frontmatter 解析 + isTranslation 跳过逻辑(错了直接污染排行榜)
  • scripts/generate-leetcode-slug-map.mts —— 中文 slug → 拼音映射(错了 301 链路全断,edge runtime 静态 import 它)
  • scripts/escape-angles.mjs —— prebuild 改写 MDX(错了 build 全挂或内容悄悄变形)

这类"胶水脚本"恰恰是历史事故多发区(参考 dev_docs/ 里 leetcode redirect、sync-uuid 的修复史)。

方案

  1. 把三个脚本的纯函数部分抽出可 import 的模块(脚本入口只留 I/O 编排),vitest 直接测:
    • parseDocFrontmatter:有/无 docId、有/无 translatedFrom、损坏 frontmatter
    • slug 转换:中文标题、中英混排、特殊字符、已是拼音的幂等性
    • escape-angles:泛型尖括号、JSX 标签不误伤、幂等性
  2. 快照测试:固定一组样例 MDX 输入,锁输出(防悄悄变形)。
  3. CI 已跑 pnpm test(vitest),无需新 workflow。

验收

  • 三个脚本的核心逻辑分支覆盖 ≥80%
  • 现有 pnpm build 产物与重构前 byte 级一致(重构不改行为)

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions