watch: reload env file for --env-file-if-exists
PR-URL: https://github.com/nodejs/node/pull/56643 Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com> Reviewed-By: James M Snell <jasnell@gmail.com>
This commit is contained in:
parent
23d0a7f80c
commit
59b3a8b21b
@ -33,7 +33,7 @@ markBootstrapComplete();
|
||||
// TODO(MoLow): Make kill signal configurable
|
||||
const kKillSignal = 'SIGTERM';
|
||||
const kShouldFilterModules = getOptionValue('--watch-path').length === 0;
|
||||
const kEnvFile = getOptionValue('--env-file');
|
||||
const kEnvFile = getOptionValue('--env-file') || getOptionValue('--env-file-if-exists');
|
||||
const kWatchedPaths = ArrayPrototypeMap(getOptionValue('--watch-path'), (path) => resolve(path));
|
||||
const kPreserveOutput = getOptionValue('--watch-preserve-output');
|
||||
const kCommand = ArrayPrototypeSlice(process.argv, 1);
|
||||
|
@ -242,6 +242,32 @@ describe('watch mode', { concurrency: !process.env.TEST_PARALLEL, timeout: 60_00
|
||||
}
|
||||
});
|
||||
|
||||
it('should load new env variables when --env-file-if-exists changes', async () => {
|
||||
const envKey = `TEST_ENV_${Date.now()}`;
|
||||
const envKey2 = `TEST_ENV_2_${Date.now()}`;
|
||||
const jsFile = createTmpFile(`console.log('ENV: ' + process.env.${envKey} + '\\n' + 'ENV2: ' + process.env.${envKey2});`);
|
||||
const envFile = createTmpFile(`${envKey}=value1`, '.env');
|
||||
const { done, restart } = runInBackground({ args: ['--watch', `--env-file-if-exists=${envFile}`, jsFile] });
|
||||
|
||||
try {
|
||||
await restart();
|
||||
writeFileSync(envFile, `${envKey}=value1\n${envKey2}=newValue`);
|
||||
|
||||
// Second restart, after env change
|
||||
const { stderr, stdout } = await restart();
|
||||
|
||||
assert.strictEqual(stderr, '');
|
||||
assert.deepStrictEqual(stdout, [
|
||||
`Restarting ${inspect(jsFile)}`,
|
||||
'ENV: value1',
|
||||
'ENV2: newValue',
|
||||
`Completed running ${inspect(jsFile)}`,
|
||||
]);
|
||||
} finally {
|
||||
await done();
|
||||
}
|
||||
});
|
||||
|
||||
it('should watch changes to a failing file', async () => {
|
||||
const file = createTmpFile('throw new Error("fails");');
|
||||
const { stderr, stdout } = await runWriteSucceed({
|
||||
|
Loading…
x
Reference in New Issue
Block a user