@@ -104,7 +104,7 @@ async function runWriteSucceed({
104104 if  ( watchFlag  !==  null )  args . unshift ( watchFlag ) ; 
105105 const  child  =  spawn ( execPath ,  args ,  {  encoding : 'utf8' ,  stdio : 'pipe' ,  ...options  } ) ; 
106106 let  completes  =  0 ; 
107-  let  cancelRestarts  =  ( )  =>  { } ; 
107+  let  cancelRestarts  =  ( )  =>  {   } ; 
108108 let  stderr  =  '' ; 
109109 const  stdout  =  [ ] ; 
110110
@@ -141,7 +141,7 @@ async function runWriteSucceed({
141141
142142async  function  failWriteSucceed ( {  file,  watchedFile } )  { 
143143 const  child  =  spawn ( execPath ,  [ '--watch' ,  '--no-warnings' ,  file ] ,  {  encoding : 'utf8' ,  stdio : 'pipe'  } ) ; 
144-  let  cancelRestarts  =  ( )  =>  { } ; 
144+  let  cancelRestarts  =  ( )  =>  {   } ; 
145145
146146 try  { 
147147 // Break the chunks into lines 
@@ -164,9 +164,11 @@ tmpdir.refresh();
164164describe ( 'watch mode' ,  {  concurrency : ! process . env . TEST_PARALLEL ,  timeout : 60_000  } ,  ( )  =>  { 
165165 it ( 'should watch changes to a file' ,  async  ( )  =>  { 
166166 const  file  =  createTmpFile ( ) ; 
167-  const  {  stderr,  stdout }  =  await  runWriteSucceed ( {  file,  watchedFile : file ,  watchFlag : '--watch=true' ,  options : { 
168-  timeout : 10000 
169-  }  } ) ; 
167+  const  {  stderr,  stdout }  =  await  runWriteSucceed ( { 
168+  file,  watchedFile : file ,  watchFlag : '--watch=true' ,  options : { 
169+  timeout : 10000 
170+  } 
171+  } ) ; 
170172
171173 assert . strictEqual ( stderr ,  '' ) ; 
172174 assert . deepStrictEqual ( stdout ,  [ 
@@ -192,55 +194,57 @@ describe('watch mode', { concurrency: !process.env.TEST_PARALLEL, timeout: 60_00
192194 ] ) ; 
193195 } ) ; 
194196
195-  it ( 'should reload env variables when --env-file changes' ,  async  ( )  =>  { 
196-  const  envKey  =  `TEST_ENV_${ Date . now ( ) }  ` ; 
197-  const  jsFile  =  createTmpFile ( `console.log('ENV: ' + process.env.${ envKey }  );` ) ; 
198-  const  envFile  =  createTmpFile ( `${ envKey }  =value1` ,  '.env' ) ; 
199-  const  {  done,  restart }  =  runInBackground ( {  args : [ '--watch' ,  `--env-file=${ envFile }  ` ,  jsFile ]  } ) ; 
200- 
201-  try  { 
202-  await  restart ( ) ; 
203-  writeFileSync ( envFile ,  `${ envKey }  =value2` ) ; 
204- 
205-  // Second restart, after env change 
206-  const  {  stdout,  stderr }  =  await  restart ( ) ; 
207- 
208-  assert . strictEqual ( stderr ,  '' ) ; 
209-  assert . deepStrictEqual ( stdout ,  [ 
210-  `Restarting ${ inspect ( jsFile ) }  ` , 
211-  'ENV: value2' , 
212-  `Completed running ${ inspect ( jsFile ) }  ` , 
213-  ] ) ; 
214-  }  finally  { 
215-  await  done ( ) ; 
216-  } 
217-  } ) ; 
197+  for  ( const  cmd  in  [ '--env-file' ,  '--env-file-if-exists' ] )  { 
198+  it ( `should reload env variables when ${ cmd }   changes` ,  async  ( )  =>  { 
199+  const  envKey  =  `TEST_ENV_${ Date . now ( ) }  ` ; 
200+  const  jsFile  =  createTmpFile ( `console.log('ENV: ' + process.env.${ envKey }  );` ) ; 
201+  const  envFile  =  createTmpFile ( `${ envKey }  =value1` ,  '.env' ) ; 
202+  const  {  done,  restart }  =  runInBackground ( {  args : [ '--watch' ,  `${ cmd }  =${ envFile }  ` ,  jsFile ]  } ) ; 
203+ 
204+  try  { 
205+  await  restart ( ) ; 
206+  writeFileSync ( envFile ,  `${ envKey }  =value2` ) ; 
207+ 
208+  // Second restart, after env change 
209+  const  {  stdout,  stderr }  =  await  restart ( ) ; 
210+ 
211+  assert . strictEqual ( stderr ,  '' ) ; 
212+  assert . deepStrictEqual ( stdout ,  [ 
213+  `Restarting ${ inspect ( jsFile ) }  ` , 
214+  'ENV: value2' , 
215+  `Completed running ${ inspect ( jsFile ) }  ` , 
216+  ] ) ; 
217+  }  finally  { 
218+  await  done ( ) ; 
219+  } 
220+  } ) ; 
218221
219-  it ( 'should load new env variables when --env-file changes' ,  async  ( )  =>  { 
220-  const  envKey  =  `TEST_ENV_${ Date . now ( ) }  ` ; 
221-  const  envKey2  =  `TEST_ENV_2_${ Date . now ( ) }  ` ; 
222-  const  jsFile  =  createTmpFile ( `console.log('ENV: ' + process.env.${ envKey }   + '\\n' + 'ENV2: ' + process.env.${ envKey2 }  );` ) ; 
223-  const  envFile  =  createTmpFile ( `${ envKey }  =value1` ,  '.env' ) ; 
224-  const  {  done,  restart }  =  runInBackground ( {  args : [ '--watch' ,  `--env-file=${ envFile }  ` ,  jsFile ]  } ) ; 
225- 
226-  try  { 
227-  await  restart ( ) ; 
228-  writeFileSync ( envFile ,  `${ envKey }  =value1\n${ envKey2 }  =newValue` ) ; 
229- 
230-  // Second restart, after env change 
231-  const  {  stderr,  stdout }  =  await  restart ( ) ; 
232- 
233-  assert . strictEqual ( stderr ,  '' ) ; 
234-  assert . deepStrictEqual ( stdout ,  [ 
235-  `Restarting ${ inspect ( jsFile ) }  ` , 
236-  'ENV: value1' , 
237-  'ENV2: newValue' , 
238-  `Completed running ${ inspect ( jsFile ) }  ` , 
239-  ] ) ; 
240-  }  finally  { 
241-  await  done ( ) ; 
242-  } 
243-  } ) ; 
222+  it ( `should load new env variables when ${ cmd }   changes` ,  async  ( )  =>  { 
223+  const  envKey  =  `TEST_ENV_${ Date . now ( ) }  ` ; 
224+  const  envKey2  =  `TEST_ENV_2_${ Date . now ( ) }  ` ; 
225+  const  jsFile  =  createTmpFile ( `console.log('ENV: ' + process.env.${ envKey }   + '\\n' + 'ENV2: ' + process.env.${ envKey2 }  );` ) ; 
226+  const  envFile  =  createTmpFile ( `${ envKey }  =value1` ,  '.env' ) ; 
227+  const  {  done,  restart }  =  runInBackground ( {  args : [ '--watch' ,  `${ cmd }  =${ envFile }  ` ,  jsFile ]  } ) ; 
228+ 
229+  try  { 
230+  await  restart ( ) ; 
231+  writeFileSync ( envFile ,  `${ envKey }  =value1\n${ envKey2 }  =newValue` ) ; 
232+ 
233+  // Second restart, after env change 
234+  const  {  stderr,  stdout }  =  await  restart ( ) ; 
235+ 
236+  assert . strictEqual ( stderr ,  '' ) ; 
237+  assert . deepStrictEqual ( stdout ,  [ 
238+  `Restarting ${ inspect ( jsFile ) }  ` , 
239+  'ENV: value1' , 
240+  'ENV2: newValue' , 
241+  `Completed running ${ inspect ( jsFile ) }  ` , 
242+  ] ) ; 
243+  }  finally  { 
244+  await  done ( ) ; 
245+  } 
246+  } ) ; 
247+  } 
244248
245249 it ( 'should watch changes to a failing file' ,  async  ( )  =>  { 
246250 const  file  =  createTmpFile ( 'throw new Error("fails");' ) ; 
0 commit comments