From 2e44beabc1abbc6618312ea68e29526f58086a9a Mon Sep 17 00:00:00 2001 From: Affaan Mustafa Date: Mon, 13 Apr 2026 00:53:57 -0700 Subject: [PATCH] test: isolate gateguard state dir cleanup --- tests/hooks/gateguard-fact-force.test.js | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/tests/hooks/gateguard-fact-force.test.js b/tests/hooks/gateguard-fact-force.test.js index 9f6b89a9..b76e580d 100644 --- a/tests/hooks/gateguard-fact-force.test.js +++ b/tests/hooks/gateguard-fact-force.test.js @@ -8,7 +8,9 @@ const path = require('path'); const { spawnSync } = require('child_process'); const runner = path.join(__dirname, '..', '..', 'scripts', 'hooks', 'run-with-flags.js'); -const stateDir = process.env.GATEGUARD_STATE_DIR || path.join(process.env.HOME || process.env.USERPROFILE || '/tmp', '.gateguard-test-' + process.pid); +const externalStateDir = process.env.GATEGUARD_STATE_DIR; +const tmpRoot = process.env.TMPDIR || process.env.TEMP || process.env.TMP || '/tmp'; +const stateDir = externalStateDir || fs.mkdtempSync(path.join(tmpRoot, 'gateguard-test-')); // Use a fixed session ID so test process and spawned hook process share the same state file const TEST_SESSION_ID = 'gateguard-test-session'; const stateFile = path.join(stateDir, `state-${TEST_SESSION_ID}.json`); @@ -356,13 +358,15 @@ function runTests() { } })) passed++; else failed++; - // Cleanup: remove test-isolated state directory - try { - if (fs.existsSync(stateDir)) { - fs.rmSync(stateDir, { recursive: true, force: true }); + // Cleanup only the temp directory created by this test file. + if (!externalStateDir) { + try { + if (fs.existsSync(stateDir)) { + fs.rmSync(stateDir, { recursive: true, force: true }); + } + } catch (err) { + console.error(` [cleanup] failed to remove ${stateDir}: ${err.message}`); } - } catch (err) { - console.error(` [cleanup] failed to remove ${stateDir}: ${err.message}`); } console.log(`\n ${passed} passed, ${failed} failed\n`);