@@ -11,6 +11,7 @@ const { chainWebpack } = require('../lib/webpackConfig')
11
11
// #endregion
12
12
13
13
// #region Mocks
14
+ process . env . IS_TEST = true
14
15
const mockYargsParse = jest . fn ( )
15
16
const mockYargsCommand = jest . fn ( ( ) => ( { parse : mockYargsParse } ) )
16
17
jest . mock ( 'yargs' , ( ) => ( { command : mockYargsCommand } ) )
@@ -25,10 +26,14 @@ jest.mock('electron-builder/out/cli/install-app-deps.js', () => ({
25
26
} ) )
26
27
jest . mock ( '../lib/webpackConfig.js' )
27
28
const mockPipe = jest . fn ( )
29
+ const childEvents = { }
28
30
const mockExeca = {
29
- on : jest . fn ( ) ,
31
+ on : jest . fn ( ( eventName , cb ) => {
32
+ childEvents [ eventName ] = cb
33
+ } ) ,
30
34
removeAllListeners : jest . fn ( ) ,
31
35
kill : jest . fn ( ) ,
36
+ send : jest . fn ( ) ,
32
37
stdout : {
33
38
pipe : jest . fn ( ( ) => ( { pipe : mockPipe } ) )
34
39
} ,
@@ -384,6 +389,7 @@ describe('electron:serve', () => {
384
389
385
390
// Mock change of background file
386
391
watchCb ( )
392
+ childEvents . exit ( )
387
393
388
394
expect ( execa ) . toHaveBeenCalledTimes ( 2 )
389
395
expect ( execa . mock . calls [ 0 ] [ 1 ] ) . toEqual ( [
@@ -442,17 +448,18 @@ describe('electron:serve', () => {
442
448
// Proper file is watched
443
449
expect ( fs . watchFile . mock . calls [ 0 ] [ 0 ] ) . toBe ( 'projectPath/customBackground' )
444
450
// Child has not yet been killed or unwatched
445
- expect ( mockExeca . kill ) . not . toBeCalled ( )
451
+ expect ( mockExeca . send ) . not . toBeCalled ( )
446
452
expect ( mockExeca . removeAllListeners ) . not . toBeCalled ( )
447
453
// Main process was bundled and Electron was launched initially
448
454
expect ( webpack ) . toHaveBeenCalledTimes ( 1 )
449
455
expect ( execa ) . toHaveBeenCalledTimes ( 1 )
450
456
451
457
// Mock change of background file
452
458
watchCb ( )
459
+ childEvents . exit ( )
453
460
// Electron was killed and listeners removed
454
- expect ( mockExeca . kill ) . toHaveBeenCalledTimes ( 1 )
455
- expect ( mockExeca . removeAllListeners ) . toHaveBeenCalledTimes ( 1 )
461
+ expect ( mockExeca . send ) . toHaveBeenCalledTimes ( 1 )
462
+ expect ( mockExeca . send ) . toHaveBeenCalledWith ( 'graceful-exit' )
456
463
// Process did not exit on Electron close
457
464
expect ( process . exit ) . not . toBeCalled ( )
458
465
// Main process file was recompiled
@@ -484,17 +491,18 @@ describe('electron:serve', () => {
484
491
expect ( fs . watchFile . mock . calls [ 0 ] [ 0 ] ) . toBe ( 'projectPath/customBackground' )
485
492
expect ( fs . watchFile . mock . calls [ 1 ] [ 0 ] ) . toBe ( 'projectPath/listFile' )
486
493
// Child has not yet been killed or unwatched
487
- expect ( mockExeca . kill ) . not . toBeCalled ( )
494
+ expect ( mockExeca . send ) . not . toBeCalled ( )
488
495
expect ( mockExeca . removeAllListeners ) . not . toBeCalled ( )
489
496
// Main process was bundled and Electron was launched initially
490
497
expect ( webpack ) . toHaveBeenCalledTimes ( 1 )
491
498
expect ( execa ) . toHaveBeenCalledTimes ( 1 )
492
499
493
500
// Mock change of listed file
494
501
watchCb [ 'projectPath/listFile' ] ( )
502
+ childEvents . exit ( )
495
503
// Electron was killed and listeners removed
496
- expect ( mockExeca . kill ) . toHaveBeenCalledTimes ( 1 )
497
- expect ( mockExeca . removeAllListeners ) . toHaveBeenCalledTimes ( 1 )
504
+ expect ( mockExeca . send ) . toHaveBeenCalledTimes ( 1 )
505
+ expect ( mockExeca . send ) . toHaveBeenCalledWith ( 'graceful-exit' )
498
506
// Process did not exit on Electron close
499
507
expect ( process . exit ) . not . toBeCalled ( )
500
508
// Main process file was recompiled
@@ -504,9 +512,10 @@ describe('electron:serve', () => {
504
512
505
513
// Mock change of background file
506
514
watchCb [ 'projectPath/customBackground' ] ( )
515
+ childEvents . exit ( )
507
516
// Electron was killed and listeners removed
508
- expect ( mockExeca . kill ) . toHaveBeenCalledTimes ( 2 )
509
- expect ( mockExeca . removeAllListeners ) . toHaveBeenCalledTimes ( 2 )
517
+ expect ( mockExeca . send ) . toHaveBeenCalledTimes ( 2 )
518
+ expect ( mockExeca . send ) . toHaveBeenCalledWith ( 'graceful-exit' )
510
519
// Process did not exit on Electron close
511
520
expect ( process . exit ) . not . toBeCalled ( )
512
521
// Main process file was recompiled
0 commit comments