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)); }); });