@@ -4,6 +4,7 @@ const common = require('../common'); |
4 | 4 | const fixtures = require('../../test/common/fixtures'); |
5 | 5 | const assert = require('node:assert'); |
6 | 6 | const { describe, it } = require('node:test'); |
| 7 | +const { join } = require('node:path'); |
7 | 8 |
|
8 | 9 | const basicValidEnvFilePath = fixtures.path('dotenv/basic-valid.env'); |
9 | 10 | const validEnvFilePath = fixtures.path('dotenv/valid.env'); |
@@ -48,10 +49,23 @@ describe('process.loadEnvFile()', () => { |
48 | 49 | }, { code: 'ENOENT', syscall: 'open', path: missingEnvFile }); |
49 | 50 | }); |
50 | 51 |
|
| 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. |
51 | 57 | 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 | + } |
55 | 69 | }); |
56 | 70 |
|
57 | 71 | it('should check for permissions', async () => { |
|