From 293e3f58c4bf4659ae59de1020d0b2ab3e7f13ab Mon Sep 17 00:00:00 2001 From: Weiko Date: Tue, 11 Mar 2025 16:20:01 +0100 Subject: [PATCH] Fix TEST env not using the correct DB for datasources (#10780) ## Context Config was programmatically loaded in our datasources however the default behavior of dotenv is to ignore vars if they are already defined. This means we need to be careful about the order of env injection and sometimes it's done at a higher level (for example db:reset will depend on build). To make things easier I'm using the override flag to properly override the PG_DATABASE_URL if different (and to properly work with the 'test' DB instead of 'default' during testing). --- .../src/database/typeorm/core/core.datasource.ts | 5 ++++- .../src/database/typeorm/metadata/metadata.datasource.ts | 5 ++++- .../twenty-server/src/database/typeorm/raw/raw.datasource.ts | 5 ++++- packages/twenty-server/src/utils/generate-front-config.ts | 5 ++++- 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/packages/twenty-server/src/database/typeorm/core/core.datasource.ts b/packages/twenty-server/src/database/typeorm/core/core.datasource.ts index 1a6bd9ec6a..d187d8fbf6 100644 --- a/packages/twenty-server/src/database/typeorm/core/core.datasource.ts +++ b/packages/twenty-server/src/database/typeorm/core/core.datasource.ts @@ -2,7 +2,10 @@ import { TypeOrmModuleOptions } from '@nestjs/typeorm'; import { config } from 'dotenv'; import { DataSource, DataSourceOptions } from 'typeorm'; -config({ path: process.env.NODE_ENV === 'test' ? '.env.test' : '.env' }); +config({ + path: process.env.NODE_ENV === 'test' ? '.env.test' : '.env', + override: true, +}); const isJest = process.argv.some((arg) => arg.includes('jest')); diff --git a/packages/twenty-server/src/database/typeorm/metadata/metadata.datasource.ts b/packages/twenty-server/src/database/typeorm/metadata/metadata.datasource.ts index cdc833973b..2a2811432a 100644 --- a/packages/twenty-server/src/database/typeorm/metadata/metadata.datasource.ts +++ b/packages/twenty-server/src/database/typeorm/metadata/metadata.datasource.ts @@ -2,7 +2,10 @@ import { TypeOrmModuleOptions } from '@nestjs/typeorm'; import { config } from 'dotenv'; import { DataSource, DataSourceOptions } from 'typeorm'; -config({ path: process.env.NODE_ENV === 'test' ? '.env.test' : '.env' }); +config({ + path: process.env.NODE_ENV === 'test' ? '.env.test' : '.env', + override: true, +}); const isJest = process.argv.some((arg) => arg.includes('jest')); diff --git a/packages/twenty-server/src/database/typeorm/raw/raw.datasource.ts b/packages/twenty-server/src/database/typeorm/raw/raw.datasource.ts index d39907593c..45bbdc7020 100644 --- a/packages/twenty-server/src/database/typeorm/raw/raw.datasource.ts +++ b/packages/twenty-server/src/database/typeorm/raw/raw.datasource.ts @@ -1,6 +1,9 @@ import { config } from 'dotenv'; import { DataSource, DataSourceOptions } from 'typeorm'; -config({ path: process.env.NODE_ENV === 'test' ? '.env.test' : '.env' }); +config({ + path: process.env.NODE_ENV === 'test' ? '.env.test' : '.env', + override: true, +}); const typeORMRawModuleOptions: DataSourceOptions = { url: process.env.PG_DATABASE_URL, diff --git a/packages/twenty-server/src/utils/generate-front-config.ts b/packages/twenty-server/src/utils/generate-front-config.ts index 0b68772084..c842a2592b 100644 --- a/packages/twenty-server/src/utils/generate-front-config.ts +++ b/packages/twenty-server/src/utils/generate-front-config.ts @@ -2,7 +2,10 @@ import * as fs from 'fs'; import * as path from 'path'; import { config } from 'dotenv'; -config({ path: process.env.NODE_ENV === 'test' ? '.env.test' : '.env' }); +config({ + path: process.env.NODE_ENV === 'test' ? '.env.test' : '.env', + override: true, +}); export function generateFrontConfig(): void { const configObject = {