cursorai-errorprompter
Version:
AI-powered runtime error fixing for developers using Cursor
89 lines (88 loc) • 3.71 kB
JavaScript
;
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);
});
});