basant307/AI_Governance_Project
048
1/**2 * @license3 * Copyright 2025 Qwen Team4 * SPDX-License-Identifier: Apache-2.05 */6 7import { describe, expect, it } from 'vitest';8import { LspConnectionFactory } from './LspConnectionFactory.js';9 10describe('LspConnectionFactory', () => {11 it('captures stderr and exit code when stdio server closes during initialize', async () => {12 const connection = await LspConnectionFactory.createStdioConnection(13 process.execPath,14 [15 '-e',16 'process.stderr.write("clangd failed before initialize\\n"); process.exit(7);',17 ],18 );19 20 await expect(connection.connection.initialize({})).rejects.toThrow(21 'LSP connection closed',22 );23 24 if (!connection.processDiagnostics) {25 throw new Error('Expected process diagnostics for stdio connection');26 }27 const diagnostics = connection.processDiagnostics;28 29 expect(diagnostics.stderrTail).toContain('clangd failed before initialize');30 expect(diagnostics.exitCode).toBe(7);31 expect(diagnostics.exitSignal).toBeNull();32 });33 34 it('preserves UTF-8 characters split across stderr chunks', async () => {35 const connection = await LspConnectionFactory.createStdioConnection(36 process.execPath,37 [38 '-e',39 [40 'process.stderr.write(Buffer.from([0xe2]));',41 'setTimeout(() => {',42 'process.stderr.write(Buffer.from([0x98, 0x83, 0x0a]));',43 'process.exit(7);',44 '}, 10);',45 ].join(''),46 ],47 );48 49 await expect(connection.connection.initialize({})).rejects.toThrow(50 'LSP connection closed',51 );52 53 expect(connection.processDiagnostics?.stderrTail).toContain('☃');54 });55});56 