Files
2026Technology-Competition/tests/test-cases.md
T
范智鹏 e9762bfbe1 test: 目录对齐赛道二成果物规范(tests/ 迁移+实验报告+提效测量脚本)
- src/test 迁移至根目录 tests/(16 测试 + fixtures/manual),导入改为 ../src/
- 新增 tsconfig.test.json 独立编译测试;.vscode-test.mjs / package.json / .gitignore 同步
- 新增 tests/test-execution-log.md、tests/test-cases.md(116 用例清单)
- 新增 tests/measure/measure-review-time.mjs + performance-comparison.md(提效测量)
- 重命名 3 个中文报告文件为 demo-*-coverage-report.md
- git rm --cached 解除 vsix 跟踪;README 标注演示视频进行中
2026-08-26 19:17:44 +08:00

11 KiB
Raw Blame History

测试用例清单

来源:tests/*.test.tssuite() / test() 声明。共 16 个测试文件、116 条用例

1. adapter.test.ts — Adapter Tests6

# 用例 覆盖点
1 ESLintAdapter has correct id and languages 适配器标识与支持语言
2 StylelintAdapter has correct id and languages 适配器标识与支持语言
3 ESLintAdapter check returns AdapterResult structure 静态分析返回结构
4 ESLintAdapter surfaces octal literal as eslint:parse-error 八进制字面量解析错误上报
5 ESLintAdapter surfaces \8 escape as eslint:parse-error 非法转义解析错误上报
6 ESLintAdapter parses JSX in .js without parse error JSX 语法解析

2. ai-empty-response.test.ts — AI Empty Response Handling6

# 用例 覆盖点
7 parseJsonResponse throws empty-response error on blank input 空响应识别
8 parseJsonResponse parses valid JSON normally 正常 JSON 解析
9 chatWithRetry retries once on EmptyContentError 空内容自动重试
10 chatWithRetry propagates error when retry also returns empty 重试仍空则抛错
11 chatWithRetry does not retry on non-empty-content errors 非空内容错误不重试
12 openai-compatible reports max_tokens truncation clearly token 截断提示

3. ai-fix-engine.test.ts — AI FixEngine Tests4

# 用例 覆盖点
13 aiFixDiagnostic applies AI fix and converges AI 修复收敛
14 aiFixDiagnostic returns ai-match-failed when originalText not found 原文未匹配
15 aiFixDiagnostic returns ai-no-fix when AI provides empty fix AI 无修复
16 aiFixDiagnostic retries until issue resolved within maxIterations 迭代上限内收敛

4. config.test.ts — Config Tests4

# 用例 覆盖点
17 getAIConfig returns default values AI 配置默认值
18 AI individual getters return defaults 单项配置 getter
19 getLinterForLanguage returns configured linter 语言→linter 映射
20 getFixMaxIterations returns default 修复迭代默认值

5. customFixEngine.test.ts — Custom FixEngine Tests5

# 用例 覆盖点
21 aiFixReviewIssue applies AI fix and converges after verify 自定义规则 AI 修复收敛
22 aiFixReviewIssue returns ai-match-failed when originalText not found 原文未匹配
23 aiFixReviewIssue retries until verify passes within maxIterations 验证驱动重试
24 aiFixReviewIssue accepts last fix when verify never passes 验证不过时接受最后修复
25 aiFixReviewIssue retries empty fix once then fails with ai-no-fix 空修复重试一次后失败

6. dedup-prompt.test.ts — Dedup Prompt Tests3

# 用例 覆盖点
26 buildDedupOnlyPrompt 同时提供静态规则与自定义规则 去重 prompt 组装
27 自定义规则时包含静态规则 去重 prompt 规则合并
28 buildKnownRulesSection 生成的规则包含全部 已知规则段完整性

7. diagnostics.test.ts — DiagnosticMarkers Tests6

# 用例 覆盖点
29 toVscodeDiagnostics maps severity correctly 严重级别映射
30 toVscodeDiagnostics preserves range 范围保留
31 toVscodeDiagnostics prefixes message with plugin and linter 消息前缀
32 toVscodeDiagnostics handles ruleId without linter prefix 无前缀 ruleId
33 toVscodeDiagnostics sets source and code for quick fix hover hover 修复来源/代码
34 toVscodeDiagnostics returns empty array for empty input 空输入

8. fixEngine.test.ts — FixEngine Tests5

# 用例 覆盖点
35 ESLint adapter attaches fix object for autofixable issues 可自动修复诊断挂 fix
36 fixDiagnostic multi-round convergence produces applied fixes 多轮修复收敛
37 fixDiagnostic returns not-autofixable for non-fixable rule 不可修复规则
38 fixDiagnostic no-change returns no-change 无变化场景
39 fixDiagnostic fixes only the targeted issue, not adjacent same-rule instance 定点修复不误伤相邻同类

9. fixSession.test.ts — FixSession Tests6

# 用例 覆盖点
40 add/get/has roundtrip 会话读写
41 get returns undefined for missing key 缺失键
42 getEntries filters per uri 按 uri 过滤
43 clear removes entries for uri only 按 uri 清理
44 recordFixes merges multi-round fixes under same key 多轮修复合并
45 undo restores original text via workspace edit 撤销恢复原文

10. import-dedup.test.ts — Import Dedup Tests25

# 用例 覆盖点
46 重复规则:全局检查并标注 全局重复检查
47 全局 exact:全部标注 exact 去重
48 全局 overlap:全部检查并标注 overlap 去重
49 跨规则 exact 标注(overlap 归 none 跨规则 exact 归属
50 用户指定 exact 后取消标注 用户决策 exact
51 用户标注 overlap 将标注加 # 前缀 overlap 标注头
52 用户标注 none 加 # 前缀 none 标注头
53 已标注 duplicateLevel/duplicateOf/duplicateReason 剔出标注 已标注剔除
54 标注规则 duplicateReason 标注头回填原由 原因回填
55 编辑 description 确认 YAML 使用该值 description 编辑
56 编辑 severity 确认 YAML 使用该 severity severity 编辑
57 编辑 languages 确认 YAML 有 languages languages 编辑
58 编辑切换为标注、标注转为编辑值 编辑/标注互转
59 无编辑时保留原始 yamlContent 原始内容保留
60 severity 缺失默认为 warning severity 默认
61 severity 非法值默认为 warning severity 兜底
62 id 缺失生成 rule-N id 自动命名
63 多个 id 缺失依次 rule-1, rule-2... 递增命名
64 description 缺失时使用 message(中文存在) 双语回退
65 message 缺失时使用 description(中文存在) 双语回退
66 description 与 message 同时缺失时兜底 全缺失兜底
67 重复规则的重复校验回归 去重回归
68 id 带引号、字段带引号保留 id 引号 id
69 scalar 字段带引号、保留引号 引号 scalar

11. merger.test.ts — Merger Tests12

# 用例 覆盖点
70 mergeResults counts correctly 计数正确
71 mergeResults marks degraded when AI fails AI 失败降级
72 mergeResults sorts diagnostics by severity then line 排序
73 mergeResults marks fixable only diagnostics with fix object 可修复标记
74 mergeResults converts aiFindings line to 0-based 行号 0 基化
75 mergeResults pairs translations by originalRuleId not index 按规则 id 配对翻译
76 mergeResults handles duplicate ruleId translations in order 重复 id 有序
77 mergeResults matches translations by normalized ruleId when prefix missing 缺前缀归一化匹配
78 mergeResults matches translations by normalized ruleId with slash variant 斜杠变体匹配
79 mergeResults prefers exact ruleId match over normalized 精确匹配优先
80 mergeResults computes aiFixableLinterIndices excluding native fix and sqlfluff AI 可修复索引
81 mergeResults aiFixableLinterIndices empty when AI unavailable AI 不可用置空

12. messages.test.ts — I18n Tests9

# 用例 覆盖点
82 all message keys have values for all three languages 三语 key 完整
83 default language is zh-CN 默认语言
84 setLanguage changes current language 语言切换
85 t() falls back to key when key does not exist 缺失 key 回退
86 t() returns zh-CN string in zh-CN language 中文翻译
87 t() returns English string in en language 英文翻译
88 t() returns Japanese string in ja language 日文翻译
89 t() with template variables 模板变量
90 t() with multiple template variables 多模板变量

13. pipeline.test.ts — Pipeline Tests1

# 用例 覆盖点
91 Full pipeline: linter check + merge 全链路(linter + 合并)

14. rule-filter.test.ts — Rule Filter Tests15

# 用例 覆盖点
92 规则匹配当前语言 语言匹配
93 规则未匹配被过滤 不匹配过滤
94 规则为空:全部保留 空规则集
95 规则缺失:全部保留 缺失过滤
96 规则按语言匹配后去重 去重
97 规则未匹配语言则去除 语言不匹配去除
98 规则为空时去重 空集去重
99 规则 + 语言映射匹配时过滤结果优先 优先级
100 typescriptreact 同源映射到 typescript TSX 映射
101 plsql 同源映射到 sql PL/SQL 映射
102 JSP 映射 java 规则 JSP→Java
103 JSP 不映射 css 规则 JSP→CSS 排除
104 普通 HTML 触发 JSP 过滤 java 规则 HTML→JSP
105 全部过滤触发 skippedRequestA=true 全过滤标记
106 部分过滤触发 skippedRequestA=false 部分过滤标记

15. sqlfluff-prs.test.ts — SqlFluff PRS Tests4

# 用例 覆盖点
107 buildPRSMessage extracts fragment from description PRS 片段提取
108 buildPRSMessage flattens newlines in fragment 换行压平
109 buildPRSMessage truncates long fragments 长片段截断
110 buildPRSMessage falls back to description when pattern missing 无匹配回退

16. sqlfluff-range.test.ts — SqlFluff Range Tests6

# 用例 覆盖点
111 full positions convert to zero-based range 完整位置 0 基化
112 missing end positions fall back to start (comment JJ01 case) 缺终点回退(JJ01
113 legacy line_no/line_pos keys are honored 旧版 key 兼容
114 null positions fall back to defaults null 兜底
115 zero positions are clamped to valid values 零值钳制
116 missing all positions produce a safe zero range 全缺失安全范围

统计

文件 用例数
adapter.test.ts 6
ai-empty-response.test.ts 6
ai-fix-engine.test.ts 4
config.test.ts 4
customFixEngine.test.ts 5
dedup-prompt.test.ts 3
diagnostics.test.ts 6
fixEngine.test.ts 5
fixSession.test.ts 6
import-dedup.test.ts 25
merger.test.ts 12
messages.test.ts 9
pipeline.test.ts 1
rule-filter.test.ts 15
sqlfluff-prs.test.ts 4
sqlfluff-range.test.ts 6
合计 116