import "reflect-metadata"; import * as dotenv from "dotenv"; import * as path from "path"; import * as fs from "fs"; // Load environment variables from .env.test if it exists // This allows local integration tests to run with a local database // CI environments explicitly provide DATABASE_URL in the test step, so skip loading .env.test there const envTestPath = path.resolve(__dirname, ".env.test"); const isCI = process.env.CI === "true" || process.env.CI === "woodpecker" || process.env.CI_PIPELINE_EVENT !== undefined; if (!isCI && fs.existsSync(envTestPath)) { const result = dotenv.config({ path: envTestPath }); if (result.error) { throw new Error( `Failed to load test environment configuration: ${result.error.message}\n` + `Ensure .env.test exists in the api directory and is properly formatted.` ); } // Validate DATABASE_URL format if provided if (process.env.DATABASE_URL && !process.env.DATABASE_URL.startsWith("postgresql://")) { throw new Error( "Invalid DATABASE_URL format in .env.test. " + "Expected format: postgresql://user:password@host:port/database" ); } // Log only in debug mode if (process.env.DEBUG) { console.debug("Test environment variables loaded from .env.test"); } }