Skip to content

test: v8-2 self-made .ttsmod fixtures + baseline recovery (2024 to 2037) - #2

Merged
Smirk1921 merged 1 commit into
mainfrom
feat/phase8-v8-2
Oct 6, 2026
Merged

Smirk1921 merged 1 commit into
mainfrom
feat/phase8-v8-2

Conversation

@Smirk1921

Copy link
Copy Markdown
Owner

窗口 v8-2:自制夹具 + 测试基线恢复

依据:施工方案-v0.8.0 §六

产物

  • scripts/make-fixture.mjs(252 行):从 D:\工具\TTS\research\ 真实样本裁剪 + 匿名化生成 3 个夹具 + 1 个 extracted/ 目录(仅维护者本机用)
  • tests/fixtures/{s_dial,s_hex,sample_diceset}.ttsmod(总 20.8 KB,ZIP 条目数 51/4/13)
  • tests/fixtures/extracted/(13 文件,来自匿名化后 sample_diceset.ttsmod)

配置变更

  • .gitignore:tests/fixtures/ 入白名单(仅排除 original/ 子目录)
  • .gitattributes(新增):夹具文件 -text(防 autocrlf 破坏 archive-ttsmod.test.ts:243 字节比对)
  • package.json scripts 加 make-fixture 入口
  • ci.yml 头部注释同步 v8-2 完工状态

测试基线

环境 passed skipped failed
本地(不设 TTS_EXTRACTED_DIR) 2036 70 0
本地(设 TTS_EXTRACTED_DIR=tests/fixtures/extracted) 2037 69 0
CI(不设环境变量) 2024 82 0(不破坏)

实测偏差(已采纳入库)

  1. Nickname / SaveName 不能匿名化——pack-unpack.test.ts:298 断言 SaveName === 'Custom Dice Set'、:315 断言两个 Nickname === 'D8' 重名追加 .2;匿名化只对 Description 与 URL 主机做
  2. LuaScript 不能替换为 print("fixture")——pack-unpack.test.ts:329 断言空字符串(保持空)
  3. .cjc 是二进制不是 JSON——s_hex.ttsmod 的 Mods/Workshop/333845772.cjc 不能 JSON.parse,原样保留字节即可
  4. extracted/ 必须来自匿名化后的 .ttsmod(不是真实样本原包)——archive-ttsmod.test.ts:243 用 Buffer.compare === 0 断言字节一致

编排模式教训

原方案"单 run 单 GLM 代理"开工 21 分钟无产出(任务书过大),主窗口按 workflow-vitest-loop-pitfall §5 快速通道原则改"主窗口亲自写 + 子代理复核",45 分钟完工。教训将记入项目记忆 tts-phase8-v8-2-status.md。

验收清单

  • make-fixture.mjs 顶部 JSDoc 完整(含 13 个测试期望 + URL 特殊字符来源 + 实测偏差)
  • 3 个 .ttsmod 入库(≤ 100KB 每个,总 20.8KB)
  • extracted/ 13 文件入库
  • .gitignore / .gitattributes / package.json 修订
  • 3 个测试文件顶部注释同步指向自制夹具
  • 本地两条基线双双达成(2036/70 与 2037/69)
  • CI 不破坏(无 TTS_FIXTURE_DIR / TTS_EXTRACTED_DIR 环境变量)

窗口 v8-2:自制夹具 + 测试基线恢复(2024 → 2037)

产物:
- scripts/make-fixture.mjs(252 行):从 D:\工具\TTS\research\ 真实样本
  裁剪 + 匿名化生成 3 个夹具 + 1 个 extracted/ 目录
- tests/fixtures/{s_dial,s_hex,sample_diceset}.ttsmod(总 20.8 KB,条目数 51/4/13)
- tests/fixtures/extracted/(13 文件,来自匿名化后 sample_diceset.ttsmod)

配置:
- .gitignore 修订:tests/fixtures/ 入白名单(仅排除 original/)
- .gitattributes 新增:夹具文件 -text(防 autocrlf 破坏字节比对)
- package.json scripts 加 make-fixture 入口

测试基线:
- 本地 npm test(不设 TTS_EXTRACTED_DIR):2036 passed / 70 skipped / 0 failed
- 本地 TTS_EXTRACTED_DIR=tests/fixtures/extracted npm test:2037 passed / 69 skipped / 0 failed
- CI(不设环境变量):2024 passed / 82 skipped / 0 failed(不破坏)

实测偏差(已采纳入库):
1. Nickname / SaveName 不能匿名化(pack-unpack.test.ts:298/315 依赖原值)
2. LuaScript 不能替换为 print("fixture")(pack-unpack.test.ts:329 依赖空串)
3. .cjc 是二进制不是 JSON(s_hex.ttsmod 的 333845772.cjc 原样保留)
4. extracted/ 必须来自匿名化后的 .ttsmod(archive-ttsmod.test.ts:243 字节比对)

测试文件顶部注释同步更新指向自制夹具。ci.yml 注释同步 v8-2 完工状态。
@Smirk1921
Smirk1921 merged commit 9ab8f74 into main Oct 6, 2026
1 check passed
@Smirk1921
Smirk1921 deleted the feat/phase8-v8-2 branch October 6, 2026 20:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant