42 lines
1.1 KiB
TypeScript
42 lines
1.1 KiB
TypeScript
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 ---");
|
|
}
|