Files
范智鹏 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

37 lines
1.2 KiB
TypeScript

import * as assert from 'assert';
import { buildPRSMessage } from '../src/adapters/sqlfluff';
suite('SqlFluff PRS Tests', () => {
test('buildPRSMessage extracts fragment from description', () => {
const desc = "Line 7, Position 3: Found unparsable section: 'engine=innodb default charset=utf8mb4;'";
const msg = buildPRSMessage(desc, 'oracle');
assert.ok(msg.includes('oracle'));
assert.ok(msg.includes("engine=innodb default charset=utf8mb4;"));
});
test('buildPRSMessage flattens newlines in fragment', () => {
const desc = "Found unparsable section: 'create table orders (\n id int\n);'";
const msg = buildPRSMessage(desc, 'mysql');
assert.ok(msg.includes('\\n'));
assert.ok(!msg.includes('\n'));
});
test('buildPRSMessage truncates long fragments', () => {
const longFragment = 'x'.repeat(500);
const desc = `Found unparsable section: '${longFragment}'`;
const msg = buildPRSMessage(desc, 'ansi');
assert.ok(msg.includes('...'));
assert.ok(!msg.includes(longFragment));
});
test('buildPRSMessage falls back to description when pattern missing', () => {
const desc = 'unexpected parse error output';
const msg = buildPRSMessage(desc, 'ansi');
assert.ok(msg.includes(desc));
});
});