fix(tests): improve test reliability and performance (#8395)

This commit is contained in:
Arya Gummadi
2025-09-17 10:12:33 -07:00
committed by GitHub
parent bbf7c6ed36
commit 678e947f21
2 changed files with 37 additions and 20 deletions
+23 -14
View File
@@ -15,6 +15,7 @@ import {
} from 'vitest'; } from 'vitest';
import * as actualNodeFs from 'node:fs'; // For setup/teardown import * as actualNodeFs from 'node:fs'; // For setup/teardown
import fs from 'node:fs';
import fsPromises from 'node:fs/promises'; import fsPromises from 'node:fs/promises';
import path from 'node:path'; import path from 'node:path';
import os from 'node:os'; import os from 'node:os';
@@ -954,22 +955,30 @@ describe('fileUtils', () => {
}); });
it('should return an error if the file size exceeds 20MB', async () => { it('should return an error if the file size exceeds 20MB', async () => {
// Create a file just over 20MB // Create a small test file
const twentyOneMB = 21 * 1024 * 1024; actualNodeFs.writeFileSync(testTextFilePath, 'test content');
const buffer = Buffer.alloc(twentyOneMB, 0x61); // Fill with 'a'
actualNodeFs.writeFileSync(testTextFilePath, buffer);
const result = await processSingleFileContent( // Spy on fs.promises.stat to return a large file size
testTextFilePath, const statSpy = vi.spyOn(fs.promises, 'stat').mockResolvedValueOnce({
tempRootDir, size: 21 * 1024 * 1024,
new StandardFileSystemService(), isDirectory: () => false,
); } as fs.Stats);
expect(result.error).toContain('File size exceeds the 20MB limit'); try {
expect(result.returnDisplay).toContain( const result = await processSingleFileContent(
'File size exceeds the 20MB limit', testTextFilePath,
); tempRootDir,
expect(result.llmContent).toContain('File size exceeds the 20MB limit'); new StandardFileSystemService(),
);
expect(result.error).toContain('File size exceeds the 20MB limit');
expect(result.returnDisplay).toContain(
'File size exceeds the 20MB limit',
);
expect(result.llmContent).toContain('File size exceeds the 20MB limit');
} finally {
statSpy.mockRestore();
}
}); });
}); });
}); });
@@ -63,7 +63,13 @@ describe('loadServerHierarchicalMemory', () => {
// Some tests set this to a different value. // Some tests set this to a different value.
setGeminiMdFilename(DEFAULT_CONTEXT_FILENAME); setGeminiMdFilename(DEFAULT_CONTEXT_FILENAME);
// Clean up the temporary directory to prevent resource leaks. // Clean up the temporary directory to prevent resource leaks.
await fsPromises.rm(testRootDir, { recursive: true, force: true }); // Use maxRetries option for robust cleanup without race conditions
await fsPromises.rm(testRootDir, {
recursive: true,
force: true,
maxRetries: 3,
retryDelay: 10,
});
}); });
describe('when untrusted', () => { describe('when untrusted', () => {
@@ -354,9 +360,11 @@ describe('loadServerHierarchicalMemory', () => {
.spyOn(console, 'debug') .spyOn(console, 'debug')
.mockImplementation(() => {}); .mockImplementation(() => {});
for (let i = 0; i < 100; i++) { // Create directories in parallel for better performance
await createEmptyDir(path.join(cwd, `deep_dir_${i}`)); const dirPromises = Array.from({ length: 2 }, (_, i) =>
} createEmptyDir(path.join(cwd, `deep_dir_${i}`)),
);
await Promise.all(dirPromises);
// Pass the custom limit directly to the function // Pass the custom limit directly to the function
await loadServerHierarchicalMemory( await loadServerHierarchicalMemory(
@@ -371,12 +379,12 @@ describe('loadServerHierarchicalMemory', () => {
respectGitIgnore: true, respectGitIgnore: true,
respectGeminiIgnore: true, respectGeminiIgnore: true,
}, },
50, // maxDirs 1, // maxDirs
); );
expect(consoleDebugSpy).toHaveBeenCalledWith( expect(consoleDebugSpy).toHaveBeenCalledWith(
expect.stringContaining('[DEBUG] [BfsFileSearch]'), expect.stringContaining('[DEBUG] [BfsFileSearch]'),
expect.stringContaining('Scanning [50/50]:'), expect.stringContaining('Scanning [1/1]:'),
); );
vi.mocked(console.debug).mockRestore(); vi.mocked(console.debug).mockRestore();