diff options
Diffstat (limited to 'packages/core/src/tools/shell.test.ts')
| -rw-r--r-- | packages/core/src/tools/shell.test.ts | 34 |
1 files changed, 8 insertions, 26 deletions
diff --git a/packages/core/src/tools/shell.test.ts b/packages/core/src/tools/shell.test.ts index 96ff49a1..c968af26 100644 --- a/packages/core/src/tools/shell.test.ts +++ b/packages/core/src/tools/shell.test.ts @@ -66,7 +66,6 @@ describe('ShellTool', () => { Buffer.from('abcdef', 'hex'), ); - // Capture the output callback to simulate streaming events from the service mockShellExecutionService.mockImplementation((_cmd, _cwd, callback) => { mockShellOutputCallback = callback; return { @@ -123,8 +122,6 @@ describe('ShellTool', () => { const fullResult: ShellExecutionResult = { rawOutput: Buffer.from(result.output || ''), output: 'Success', - stdout: 'Success', - stderr: '', exitCode: 0, signal: null, error: null, @@ -141,7 +138,7 @@ describe('ShellTool', () => { resolveShellExecution({ pid: 54321 }); vi.mocked(fs.existsSync).mockReturnValue(true); - vi.mocked(fs.readFileSync).mockReturnValue('54321\n54322\n'); // Service PID and background PID + vi.mocked(fs.readFileSync).mockReturnValue('54321\n54322\n'); const result = await promise; @@ -152,6 +149,8 @@ describe('ShellTool', () => { expect.any(String), expect.any(Function), mockAbortSignal, + undefined, + undefined, ); expect(result.llmContent).toContain('Background PIDs: 54322'); expect(vi.mocked(fs.unlinkSync)).toHaveBeenCalledWith(tmpFile); @@ -164,8 +163,6 @@ describe('ShellTool', () => { resolveShellExecution({ rawOutput: Buffer.from(''), output: '', - stdout: '', - stderr: '', exitCode: 0, signal: null, error: null, @@ -178,6 +175,8 @@ describe('ShellTool', () => { expect.any(String), expect.any(Function), mockAbortSignal, + undefined, + undefined, ); }); @@ -189,16 +188,13 @@ describe('ShellTool', () => { error, exitCode: 1, output: 'err', - stderr: 'err', rawOutput: Buffer.from('err'), - stdout: '', signal: null, aborted: false, pid: 12345, }); const result = await promise; - // The final llmContent should contain the user's command, not the wrapper expect(result.llmContent).toContain('Error: wrapped command failed'); expect(result.llmContent).not.toContain('pgrep'); }); @@ -231,8 +227,6 @@ describe('ShellTool', () => { resolveExecutionPromise({ output: 'long output', rawOutput: Buffer.from('long output'), - stdout: 'long output', - stderr: '', exitCode: 0, signal: null, error: null, @@ -257,7 +251,7 @@ describe('ShellTool', () => { mockShellExecutionService.mockImplementation(() => { throw error; }); - vi.mocked(fs.existsSync).mockReturnValue(true); // Pretend the file exists + vi.mocked(fs.existsSync).mockReturnValue(true); const invocation = shellTool.build({ command: 'a-command' }); await expect(invocation.execute(mockAbortSignal)).rejects.toThrow(error); @@ -280,33 +274,26 @@ describe('ShellTool', () => { const invocation = shellTool.build({ command: 'stream' }); const promise = invocation.execute(mockAbortSignal, updateOutputMock); - // First chunk, should be throttled. mockShellOutputCallback({ type: 'data', - stream: 'stdout', chunk: 'hello ', }); expect(updateOutputMock).not.toHaveBeenCalled(); - // Advance time past the throttle interval. await vi.advanceTimersByTimeAsync(OUTPUT_UPDATE_INTERVAL_MS + 1); - // Send a second chunk. THIS event triggers the update with the CUMULATIVE content. mockShellOutputCallback({ type: 'data', - stream: 'stderr', - chunk: 'world', + chunk: 'hello world', }); // It should have been called once now with the combined output. expect(updateOutputMock).toHaveBeenCalledOnce(); - expect(updateOutputMock).toHaveBeenCalledWith('hello \nworld'); + expect(updateOutputMock).toHaveBeenCalledWith('hello world'); resolveExecutionPromise({ rawOutput: Buffer.from(''), output: '', - stdout: '', - stderr: '', exitCode: 0, signal: null, error: null, @@ -332,16 +319,13 @@ describe('ShellTool', () => { }); expect(updateOutputMock).toHaveBeenCalledOnce(); - // Advance time past the throttle interval. await vi.advanceTimersByTimeAsync(OUTPUT_UPDATE_INTERVAL_MS + 1); - // Send a SECOND progress event. This one will trigger the flush. mockShellOutputCallback({ type: 'binary_progress', bytesReceived: 2048, }); - // Now it should be called a second time with the latest progress. expect(updateOutputMock).toHaveBeenCalledTimes(2); expect(updateOutputMock).toHaveBeenLastCalledWith( '[Receiving binary output... 2.0 KB received]', @@ -350,8 +334,6 @@ describe('ShellTool', () => { resolveExecutionPromise({ rawOutput: Buffer.from(''), output: '', - stdout: '', - stderr: '', exitCode: 0, signal: null, error: null, |
