3.7 KiB
3.7 KiB
Phase 18 — WEAK 修复 + ACCEPTABLE 加固
创建日期:2026-04-02 预计:+30 tests / 4 files (修改现有) 目标:修复所有 WEAK 评分测试文件,消除系统性问题
18.1 src/utils/__tests__/format.test.ts — 断言精确化(+5 tests)
问题: formatNumber/formatTokens/formatRelativeTime 使用 toContain
修复: 改为 toBe 精确匹配
- expect(formatNumber(1500000)).toContain("1.5")
+ expect(formatNumber(1500000)).toBe("1.5m")
新增测试:
| 测试用例 | 验证点 |
|---|---|
| formatNumber — 0 | "0" |
| formatNumber — billions | "1.5b" |
| formatTokens — thousands | 精确匹配 |
| formatRelativeTime — hours ago | 精确匹配 |
| formatRelativeTime — days ago | 精确匹配 |
18.2 src/utils/__tests__/envValidation.test.ts — Bug 确认(+3 tests)
问题: value=1, lowerBound=100 返回 status: "valid" — 函数名暗示有下界检查
计划: 先读取源码确认 defaultValue 和 lowerBound 的语义关系,然后:
- 如果是源码 bug → 在测试中注释标记,不修改源码
- 如果是设计意图 → 更新测试描述明确语义
新增测试:
| 测试用例 | 验证点 |
|---|---|
| parseFloat truncation | "50.9" → 50 |
| whitespace handling | " 500 " → 500 |
| very large number | overflow 处理 |
18.3 src/utils/permissions/__tests__/PermissionMode.test.ts — false 路径(+8 tests)
问题: isExternalPermissionMode false 路径从未执行
修复: 覆盖所有 5 种 mode 的 true/false 期望
| 测试用例 | 验证点 |
|---|---|
| isExternalPermissionMode — plan | false |
| isExternalPermissionMode — auto | false |
| isExternalPermissionMode — default | false |
| permissionModeFromString — all modes | 5 种 mode 全覆盖 |
| permissionModeFromString — invalid | 默认值 |
| permissionModeFromString — case insensitive | 大小写 |
| isPermissionMode — valid strings | true |
| isPermissionMode — invalid strings | false |
18.4 src/tools/shared/__tests__/gitOperationTracking.test.ts — mock analytics(+4 tests)
问题: 未 mock analytics 依赖,测试产生副作用
修复: 添加 mock.module("src/services/analytics/...", ...)
新增测试:
| 测试用例 | 验证点 |
|---|---|
| parseGitCommitId — all GH PR actions | 补齐 6 个 action |
| detectGitOperation — no analytics call | mock 验证 |
| detectGitCommitId — various formats | SHA/短 SHA/HEAD |
| git operation tracking — edge cases | 空输入、畸形输入 |
排除清单
以下模块 不纳入测试,原因合理:
| 模块 | 行数 | 排除原因 |
|---|---|---|
query.ts |
1732 | 核心循环,40+ 依赖,需完整集成环境 |
QueryEngine.ts |
1320 | 编排器,30+ 依赖 |
utils/hooks.ts |
5121 | 51 exports,spawn 子进程 |
utils/config.ts |
1817 | 文件系统 + lockfile + 全局状态 |
utils/auth.ts |
2002 | 多 provider 认证,平台特定 |
utils/fileHistory.ts |
1115 | 重 I/O 文件备份 |
utils/sessionRestore.ts |
551 | 恢复状态涉及多个子系统 |
utils/ripgrep.ts |
679 | spawn 子进程 |
utils/yaml.ts |
15 | 两行 wrapper |
utils/lockfile.ts |
43 | trivial wrapper |
screens/ / components/ |
— | Ink 渲染测试环境 |
bridge/ / remote/ / ssh/ |
— | 网络层 |
daemon/ / server/ |
— | 进程管理 |
预期成果
| 指标 | Phase 16 后 | Phase 17 后 | Phase 18 后 |
|---|---|---|---|
| 测试数 | ~1417 | ~1567 | ~1597 |
| 文件数 | 76 | 87 | 91 |
| WEAK 文件 | 6 | 4 | 0 |