File size: 1,289 Bytes
94193b5 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | import { describe, it, expect, vi } from 'vitest';
const mockVfs = {
init: vi.fn(),
readFile: vi.fn(),
writeFile: vi.fn(),
createFile: vi.fn(),
listFiles: vi.fn().mockResolvedValue([]),
listDirectories: vi.fn().mockResolvedValue([]),
deleteFile: vi.fn(),
renameFile: vi.fn(),
getFileTree: vi.fn().mockResolvedValue([]),
};
vi.mock('@/lib/vfs', () => ({
getActiveVFS: () => mockVfs,
vfs: mockVfs,
}));
vi.mock('@/lib/utils', () => ({
logger: { debug: vi.fn(), info: vi.fn(), warn: vi.fn(), error: vi.fn() },
}));
describe('cli-shell heredoc path detection', () => {
it('returns error when << appears as a file path in cat', async () => {
const { vfsShell } = await import('../cli-shell');
const result = await vfsShell.execute('test-project', ['cat', '<<']);
expect(result.success).toBe(false);
expect(result.stderr).toContain('heredoc syntax error');
expect(result.stderr).toContain('separate tool call');
});
it('returns error when <<EOF appears as a file path in cat', async () => {
const { vfsShell } = await import('../cli-shell');
const result = await vfsShell.execute('test-project', ['cat', "<<'EOF'"]);
expect(result.success).toBe(false);
expect(result.stderr).toContain('heredoc syntax error');
});
});
|