summaryrefslogtreecommitdiff
path: root/integration-tests/globalSetup.ts
diff options
context:
space:
mode:
Diffstat (limited to 'integration-tests/globalSetup.ts')
-rw-r--r--integration-tests/globalSetup.ts55
1 files changed, 55 insertions, 0 deletions
diff --git a/integration-tests/globalSetup.ts b/integration-tests/globalSetup.ts
new file mode 100644
index 00000000..89ca203f
--- /dev/null
+++ b/integration-tests/globalSetup.ts
@@ -0,0 +1,55 @@
+/**
+ * @license
+ * Copyright 2025 Google LLC
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+import { mkdir, readdir, rm } from 'fs/promises';
+import { join, dirname } from 'path';
+import { fileURLToPath } from 'url';
+
+const __dirname = dirname(fileURLToPath(import.meta.url));
+const rootDir = join(__dirname, '..');
+const integrationTestsDir = join(rootDir, '.integration-tests');
+let runDir = ''; // Make runDir accessible in teardown
+
+export async function setup() {
+ runDir = join(integrationTestsDir, `${Date.now()}`);
+ await mkdir(runDir, { recursive: true });
+
+ // Clean up old test runs, but keep the latest few for debugging
+ try {
+ const testRuns = await readdir(integrationTestsDir);
+ if (testRuns.length > 5) {
+ const oldRuns = testRuns.sort().slice(0, testRuns.length - 5);
+ await Promise.all(
+ oldRuns.map((oldRun) =>
+ rm(join(integrationTestsDir, oldRun), {
+ recursive: true,
+ force: true,
+ }),
+ ),
+ );
+ }
+ } catch (e) {
+ console.error('Error cleaning up old test runs:', e);
+ }
+
+ process.env.INTEGRATION_TEST_FILE_DIR = runDir;
+ process.env.GEMINI_CLI_INTEGRATION_TEST = 'true';
+ process.env.TELEMETRY_LOG_FILE = join(runDir, 'telemetry.log');
+
+ if (process.env.KEEP_OUTPUT) {
+ console.log(`Keeping output for test run in: ${runDir}`);
+ }
+ process.env.VERBOSE = process.env.VERBOSE ?? 'false';
+
+ console.log(`\nIntegration test output directory: ${runDir}`);
+}
+
+export async function teardown() {
+ // Cleanup the test run directory unless KEEP_OUTPUT is set
+ if (process.env.KEEP_OUTPUT !== 'true' && runDir) {
+ await rm(runDir, { recursive: true, force: true });
+ }
+}