UNPKG

meld

Version:

Meld: A template language for LLM prompts

76 lines (66 loc) 2.99 kB
/** * Example of using the command mocking utilities with RunDirectiveHandler tests */ import { describe, it, expect, vi, beforeEach } from 'vitest'; import { RunDirectiveHandler } from '@services/pipeline/DirectiveService/handlers/execution/RunDirectiveHandler.js'; import { setupCommandMocking } from '../fs/commandMockingHelper.js'; import { IValidationService } from '@services/resolution/ValidationService/IValidationService.js'; import { IStateService } from '@services/state/StateService/IStateService.js'; import { IResolutionService } from '@services/resolution/ResolutionService/IResolutionService.js'; import { IFileSystemService } from '@services/fs/FileSystemService/IFileSystemService.js'; import { DirectiveErrorCode } from '@services/pipeline/DirectiveService/errors/DirectiveError.js'; describe('RunDirectiveHandler with Command Mocking', () => { // Mock services let validationService: IValidationService; let stateService: IStateService; let resolutionService: IResolutionService; let fileSystemService: IFileSystemService; // Subject under test let handler: RunDirectiveHandler; // Command mocking utilities let mockCommand: (command: string, response: any) => void; beforeEach(() => { // This setup is just to make TypeScript happy // In real tests, these would be proper mocks validationService = {} as IValidationService; stateService = {} as IStateService; resolutionService = {} as IResolutionService; fileSystemService = {} as IFileSystemService; handler = {} as RunDirectiveHandler; mockCommand = () => {}; }); // Skip the tests in this example file to avoid failures in CI it.skip('should execute commands and store output in state variables', async () => { /* * This is an example test showing how to use the command mocking system. * In a real test, you would: * * 1. Create proper mocks for all services * 2. Create a CommandMockableFileSystem and inject it * 3. Create mock command responses * 4. Run your component under test * 5. Verify the results */ // Create a run directive node const node = { type: 'Directive', directive: { kind: 'run', command: 'echo Hello World' } }; // Example of setting up a mock command (not actually used in this skipped test) // const { mockCommand } = setupCommandMocking(); // mockCommand('echo Hello World', { stdout: 'Hello World', stderr: '', exitCode: 0 }); // In a real test, you would then execute the handler and verify results expect(true).toBe(true); // Placeholder assertion }); it.skip('should handle command execution failures', async () => { // This is an example - see notes in the first test expect(true).toBe(true); }); it.skip('should support custom output variables', async () => { // This is an example - see notes in the first test expect(true).toBe(true); }); });