| |
| |
| |
| |
| |
|
|
| import { mkdir, readdir, rm } from 'node:fs/promises'; |
| import { join, dirname } from 'node:path'; |
| import { fileURLToPath } from 'node:url'; |
| import { resolveRipgrepPath } from '../packages/core/src/tools/ripGrep.js'; |
|
|
| const __dirname = dirname(fileURLToPath(import.meta.url)); |
| const rootDir = join(__dirname, '..'); |
| const memoryTestsDir = join(rootDir, '.memory-tests'); |
| let runDir = ''; |
|
|
| export async function setup() { |
| runDir = join(memoryTestsDir, `${Date.now()}`); |
| await mkdir(runDir, { recursive: true }); |
|
|
| |
| |
| process.env['HOME'] = runDir; |
| if (process.platform === 'win32') { |
| process.env['USERPROFILE'] = runDir; |
| } |
| process.env['GEMINI_CONFIG_DIR'] = join(runDir, '.gemini'); |
|
|
| |
| const available = await resolveRipgrepPath(); |
| if (!available) { |
| throw new Error('Failed to download ripgrep binary'); |
| } |
|
|
| |
| try { |
| const testRuns = await readdir(memoryTestsDir); |
| if (testRuns.length > 3) { |
| const oldRuns = testRuns.sort().slice(0, testRuns.length - 3); |
| await Promise.all( |
| oldRuns.map((oldRun) => |
| rm(join(memoryTestsDir, oldRun), { |
| recursive: true, |
| force: true, |
| }), |
| ), |
| ); |
| } |
| } catch (e) { |
| console.error('Error cleaning up old memory test runs:', e); |
| } |
|
|
| process.env['INTEGRATION_TEST_FILE_DIR'] = runDir; |
| process.env['GEMINI_CLI_INTEGRATION_TEST'] = 'true'; |
| process.env['GEMINI_FORCE_FILE_STORAGE'] = 'true'; |
| process.env['TELEMETRY_LOG_FILE'] = join(runDir, 'telemetry.log'); |
| process.env['VERBOSE'] = process.env['VERBOSE'] ?? 'false'; |
|
|
| console.log(`\nMemory test output directory: ${runDir}`); |
| } |
|
|
| export async function teardown() { |
| |
| if (process.env['KEEP_OUTPUT'] !== 'true' && runDir) { |
| try { |
| await rm(runDir, { recursive: true, force: true }); |
| } catch (e) { |
| console.warn('Failed to clean up memory test directory:', e); |
| } |
| } |
| } |
|
|