From e1cba97df37558e266900b6def9eb493715a790c Mon Sep 17 00:00:00 2001 From: Paolo Insogna Date: Fri, 26 Apr 2024 09:04:08 +0200 Subject: [PATCH] src: fix test local edge case MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/52702 Reviewed-By: Moshe Atlow Reviewed-By: Benjamin Gruenbaum Reviewed-By: James M Snell Reviewed-By: Tobias Nießen Reviewed-By: Marco Ippolito --- test/parallel/test-process-load-env-file.js | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/test/parallel/test-process-load-env-file.js b/test/parallel/test-process-load-env-file.js index 8aeaef42c97805..a84795c7e3f1d3 100644 --- a/test/parallel/test-process-load-env-file.js +++ b/test/parallel/test-process-load-env-file.js @@ -4,6 +4,7 @@ const common = require('../common'); const fixtures = require('../../test/common/fixtures'); const assert = require('node:assert'); const { describe, it } = require('node:test'); +const { join } = require('node:path'); const basicValidEnvFilePath = fixtures.path('dotenv/basic-valid.env'); const validEnvFilePath = fixtures.path('dotenv/valid.env'); @@ -48,10 +49,23 @@ describe('process.loadEnvFile()', () => { }, { code: 'ENOENT', syscall: 'open', path: missingEnvFile }); }); + // The whole chdir flow here is to address a case where a developer + // has a .env in the worktree which is probably in the global .gitignore. + // In that case this test would fail. To avoid confusion, chdir to lib will + // make this way less likely to happen. Probably a temporary directory would + // be the best choice but given how edge this case is this is fine. it('should throw when `.env` does not exist', async () => { - assert.throws(() => { - process.loadEnvFile(); - }, { code: 'ENOENT', syscall: 'open', path: '.env' }); + const originalCwd = process.cwd(); + + try { + process.chdir(join(originalCwd, 'lib')); + + assert.throws(() => { + process.loadEnvFile(); + }, { code: 'ENOENT', syscall: 'open', path: '.env' }); + } finally { + process.chdir(originalCwd); + } }); it('should check for permissions', async () => {