test(integration-tests): isolate user memory from test runs (#6790)

This commit is contained in:
Gal Zahavi 2025-08-21 17:34:13 -07:00 committed by GitHub
parent 15c62bade3
commit 14ca687c05
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 36 additions and 2 deletions

View File

@ -9,16 +9,38 @@ if (process.env.NO_COLOR !== undefined) {
delete process.env.NO_COLOR;
}
import { mkdir, readdir, rm } from 'fs/promises';
import { mkdir, readdir, rm, readFile, writeFile, unlink } from 'fs/promises';
import { join, dirname } from 'path';
import { fileURLToPath } from 'url';
import * as os from 'os';
import {
GEMINI_CONFIG_DIR,
DEFAULT_CONTEXT_FILENAME,
} from '../packages/core/src/tools/memoryTool.js';
const __dirname = dirname(fileURLToPath(import.meta.url));
const rootDir = join(__dirname, '..');
const integrationTestsDir = join(rootDir, '.integration-tests');
let runDir = ''; // Make runDir accessible in teardown
const memoryFilePath = join(
os.homedir(),
GEMINI_CONFIG_DIR,
DEFAULT_CONTEXT_FILENAME,
);
let originalMemoryContent: string | null = null;
export async function setup() {
try {
originalMemoryContent = await readFile(memoryFilePath, 'utf-8');
} catch (e) {
if ((e as NodeJS.ErrnoException).code !== 'ENOENT') {
throw e;
}
// File doesn't exist, which is fine.
}
runDir = join(integrationTestsDir, `${Date.now()}`);
await mkdir(runDir, { recursive: true });
@ -57,4 +79,15 @@ export async function teardown() {
if (process.env.KEEP_OUTPUT !== 'true' && runDir) {
await rm(runDir, { recursive: true, force: true });
}
if (originalMemoryContent !== null) {
await mkdir(dirname(memoryFilePath), { recursive: true });
await writeFile(memoryFilePath, originalMemoryContent, 'utf-8');
} else {
try {
await unlink(memoryFilePath);
} catch {
// File might not exist if the test failed before creating it.
}
}
}

View File

@ -4,5 +4,6 @@
"noEmit": true,
"allowJs": true
},
"include": ["**/*.ts"]
"include": ["**/*.ts"],
"references": [{ "path": "../packages/core" }]
}