UNPKG

cursorai-errorprompter

Version:

AI-powered runtime error fixing for developers using Cursor

89 lines (88 loc) 3.71 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const vitest_1 = require("vitest"); const runner_1 = require("../runner"); const events_1 = require("events"); vitest_1.vi.mock('child_process', () => ({ spawn: vitest_1.vi.fn().mockImplementation(() => { const mockProcess = new events_1.EventEmitter(); mockProcess.stdout = new events_1.EventEmitter(); mockProcess.stderr = new events_1.EventEmitter(); mockProcess.kill = vitest_1.vi.fn(); return mockProcess; }) })); (0, vitest_1.describe)('Runner', () => { let runner; const mockOptions = { command: 'npm run dev', cwd: '/test/project', env: { NODE_ENV: 'test' } }; (0, vitest_1.beforeEach)(() => { vitest_1.vi.clearAllMocks(); runner = new runner_1.Runner(mockOptions); }); (0, vitest_1.it)('should spawn process with correct options', () => { const { spawn } = require('child_process'); runner.start(); (0, vitest_1.expect)(spawn).toHaveBeenCalledWith('npm', ['run', 'dev'], { cwd: '/test/project', env: { NODE_ENV: 'test' }, shell: true }); }); (0, vitest_1.it)('should emit stdout events', () => { const { spawn } = require('child_process'); const stdoutHandler = vitest_1.vi.fn(); runner.on('stdout', stdoutHandler); runner.start(); const mockProcess = spawn.mock.results[0].value; mockProcess.stdout.emit('data', Buffer.from('Server started\n')); (0, vitest_1.expect)(stdoutHandler).toHaveBeenCalledWith('Server started\n'); }); (0, vitest_1.it)('should emit stderr events', () => { const { spawn } = require('child_process'); const stderrHandler = vitest_1.vi.fn(); runner.on('stderr', stderrHandler); runner.start(); const mockProcess = spawn.mock.results[0].value; mockProcess.stderr.emit('data', Buffer.from('Error: ENOENT\n')); (0, vitest_1.expect)(stderrHandler).toHaveBeenCalledWith('Error: ENOENT\n'); }); (0, vitest_1.it)('should emit error events', () => { const { spawn } = require('child_process'); const errorHandler = vitest_1.vi.fn(); runner.on('error', errorHandler); runner.start(); const mockProcess = spawn.mock.results[0].value; mockProcess.emit('error', new Error('Process failed')); (0, vitest_1.expect)(errorHandler).toHaveBeenCalledWith(new Error('Process failed')); }); (0, vitest_1.it)('should emit exit events', () => { const { spawn } = require('child_process'); const exitHandler = vitest_1.vi.fn(); runner.on('exit', exitHandler); runner.start(); const mockProcess = spawn.mock.results[0].value; mockProcess.emit('exit', 1); (0, vitest_1.expect)(exitHandler).toHaveBeenCalledWith(1); }); (0, vitest_1.it)('should kill process on stop', () => { const { spawn } = require('child_process'); runner.start(); const mockProcess = spawn.mock.results[0].value; runner.stop(); (0, vitest_1.expect)(mockProcess.kill).toHaveBeenCalled(); }); (0, vitest_1.it)('should handle process errors gracefully', () => { const { spawn } = require('child_process'); const errorHandler = vitest_1.vi.fn(); runner.on('error', errorHandler); runner.start(); const mockProcess = spawn.mock.results[0].value; const error = new Error('Process failed'); mockProcess.emit('error', error); (0, vitest_1.expect)(errorHandler).toHaveBeenCalledWith(error); }); });