@@ -4,6 +4,7 @@ const common = require('../common');
44const fixtures = require ( '../../test/common/fixtures' ) ;
55const assert = require ( 'node:assert' ) ;
66const { describe, it } = require ( 'node:test' ) ;
7+ const { join } = require ( 'node:path' ) ;
78
89const basicValidEnvFilePath = fixtures . path ( 'dotenv/basic-valid.env' ) ;
910const validEnvFilePath = fixtures . path ( 'dotenv/valid.env' ) ;
@@ -48,10 +49,23 @@ describe('process.loadEnvFile()', () => {
4849 } , { code : 'ENOENT' , syscall : 'open' , path : missingEnvFile } ) ;
4950 } ) ;
5051
52+ // The whole chdir flow here is to address a case where a developer
53+ // has a .env in the worktree which is probably in the global .gitignore.
54+ // In that case this test would fail. To avoid confusion, chdir to lib will
55+ // make this way less likely to happen. Probably a temporary directory would
56+ // be the best choice but given how edge this case is this is fine.
5157 it ( 'should throw when `.env` does not exist' , async ( ) => {
52- assert . throws ( ( ) => {
53- process . loadEnvFile ( ) ;
54- } , { code : 'ENOENT' , syscall : 'open' , path : '.env' } ) ;
58+ const originalCwd = process . cwd ( ) ;
59+
60+ try {
61+ process . chdir ( join ( originalCwd , 'lib' ) ) ;
62+
63+ assert . throws ( ( ) => {
64+ process . loadEnvFile ( ) ;
65+ } , { code : 'ENOENT' , syscall : 'open' , path : '.env' } ) ;
66+ } finally {
67+ process . chdir ( originalCwd ) ;
68+ }
5569 } ) ;
5670
5771 it ( 'should check for permissions' , async ( ) => {
0 commit comments