/** * 标题识别差分测试:MP MetaInfo/MetaInfoPath(Python 参考实现)vs parseRelease/parseReleasePath。 * 期望输出由 `scripts/mp-sync/gen-differential.py meta` 生成(meta-mp.json),已知差异登记在 meta-deviations.json。 * 断言:实际差异集合 == 登记集合,且规范形取值与快照一致。补迁某条后测试会失败,提示删除对应登记。 */ import { describe, expect, it } from "vitest"; import { diffSample, loadMeta } from "./meta-map.ts"; const { samples, mp, deviations } = loadMeta(); describe("标题识别差分(MP MetaInfo ↔ parseRelease)", () => { it("样本 ≥ 150 且每条都有 MP 输出", () => { expect(samples.length).toBeGreaterThanOrEqual(150); for (const s of samples) { expect(mp.python[s.id], s.id).toBeDefined(); expect(mp.python[s.id]?.error, s.id).toBeUndefined(); } }); it("登记项都对应存在的样本", () => { const ids = new Set(samples.map((s) => s.id)); for (const id of Object.keys(deviations)) expect(ids.has(id), id).toBe(true); }); for (const s of samples) { it(`${s.id} ${s.input}`, () => { const actual = diffSample(s, mp.python[s.id]!); const registered = deviations[s.id] ?? {}; const snapshot = Object.fromEntries( Object.entries(registered).map(([f, d]) => [f, { mp: d!.mp, ours: d!.ours }]), ); expect(actual, `${s.id} 差异与 meta-deviations.json 登记不一致`).toEqual(snapshot); }); } });