import { execSync } from "node:child_process"; import { loadLocalEnv } from "@/utils/envUtils"; const isUnitTest = () => { return process.argv.some((arg) => arg.includes("unit")); }; const loadInfisicalSecrets = async () => { try { const secrets = execSync( "infisical secrets --env=dev --output=dotenv --recursive --silent", { encoding: "utf-8" }, ); for (const line of secrets.split("\n")) { const match = line.match(/^([^=]+)=(.*)$/); if (match) { const key = match[1]; if (process.env[key] !== undefined) continue; process.env[key] = match[2].replace(/^["']|["']$/g, ""); } } } catch (e) { console.warn("Failed to load infisical secrets:", e); } }; /** * Bun test preload script for integration tests. * Loads environment variables before any test file runs. */ if (isUnitTest()) { console.log("--- Skipping integration setup for unit tests ---"); } else { console.log("--- Setup integration tests ---"); await loadInfisicalSecrets(); loadLocalEnv({ force: true }); console.log("--- Setup integration tests complete ---"); }