summaryrefslogtreecommitdiff
path: root/packages/core/src/utils/fileUtils.test.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/core/src/utils/fileUtils.test.ts')
-rw-r--r--packages/core/src/utils/fileUtils.test.ts23
1 files changed, 23 insertions, 0 deletions
diff --git a/packages/core/src/utils/fileUtils.test.ts b/packages/core/src/utils/fileUtils.test.ts
index ca121bca..bcdf3fe7 100644
--- a/packages/core/src/utils/fileUtils.test.ts
+++ b/packages/core/src/utils/fileUtils.test.ts
@@ -426,6 +426,29 @@ describe('fileUtils', () => {
expect(result.linesShown).toEqual([6, 10]);
});
+ it('should identify truncation when reading the end of a file', async () => {
+ const lines = Array.from({ length: 20 }, (_, i) => `Line ${i + 1}`);
+ actualNodeFs.writeFileSync(testTextFilePath, lines.join('\n'));
+
+ // Read from line 11 to 20. The start is not 0, so it's truncated.
+ const result = await processSingleFileContent(
+ testTextFilePath,
+ tempRootDir,
+ 10,
+ 10,
+ );
+ const expectedContent = lines.slice(10, 20).join('\n');
+
+ expect(result.llmContent).toContain(expectedContent);
+ expect(result.llmContent).toContain(
+ '[File content truncated: showing lines 11-20 of 20 total lines. Use offset/limit parameters to view more.]',
+ );
+ expect(result.returnDisplay).toBe('Read lines 11-20 of 20 from test.txt');
+ expect(result.isTruncated).toBe(true); // This is the key check for the bug
+ expect(result.originalLineCount).toBe(20);
+ expect(result.linesShown).toEqual([11, 20]);
+ });
+
it('should handle limit exceeding file length', async () => {
const lines = ['Line 1', 'Line 2'];
actualNodeFs.writeFileSync(testTextFilePath, lines.join('\n'));