fix(core): skip real keychain in tests to stop 15s keytar hangs

MasterKeyManager.loadKeytar() now bails out early when
FUSION_MASTER_KEY_DISABLE_KEYCHAIN=1, and the core vitest setup sets that
flag for every worker. Eight tests across master-key/secrets-store/
secrets-sync-passphrase were timing out at exactly the 15s testTimeout
because they constructed MasterKeyManager without injecting a fake
KeytarLike, which made loadKeytar() reach the real OS keychain.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
gsxdsm
2026-05-17 22:45:29 -07:00
parent 51e28fb7ca
commit 1f0bb7e018
3 changed files with 16 additions and 0 deletions

View File

@@ -114,6 +114,13 @@ function findRepoRoot(start: string): string {
const repoRoot = findRepoRoot(realProjectRoot);
process.env.FUSION_TEST_REAL_ROOT = repoRoot;
// Prevent MasterKeyManager from hitting the real macOS/Linux keychain during
// tests — keytar can block for 15s+ on CI-like environments. Tests that need
// to exercise the keychain branch inject a fake KeytarLike via the constructor.
if (!process.env.FUSION_MASTER_KEY_DISABLE_KEYCHAIN) {
process.env.FUSION_MASTER_KEY_DISABLE_KEYCHAIN = "1";
}
// Shared parent directory for all worker temp dirs in this run.
// globalTeardown wipes this at the end of the suite.
const WORKER_ROOT = join(tmpdir(), "fusion-test-workers");