@@ -10,19 +10,52 @@ test('main', async t => {
1010 t . is ( exitCode , 0 ) ;
1111} ) ;
1212
13+ test ( 'main with exitCode' , async t => {
14+ try {
15+ await execa ( process . execPath , [ './fixtures/sync-exit-code.js' ] ) ;
16+ t . fail ( ) ;
17+ } catch ( { stdout, stderr, exitCode} ) {
18+ t . is ( stdout , 'foo\nbar' ) ;
19+ t . is ( stderr , '' ) ;
20+ t . is ( exitCode , 1 ) ;
21+ }
22+ } ) ;
23+
1324test ( 'main-empty' , async t => {
1425 const { stderr, exitCode} = await execa ( process . execPath , [ './fixtures/empty.js' ] ) ;
1526 t . is ( stderr , '' ) ;
1627 t . is ( exitCode , 0 ) ;
1728} ) ;
1829
30+ test ( 'main-empty with exitCode' , async t => {
31+ try {
32+ await execa ( process . execPath , [ './fixtures/empty-exit-code.js' ] ) ;
33+ t . fail ( ) ;
34+ } catch ( { stdout, stderr, exitCode} ) {
35+ t . is ( stdout , '' ) ;
36+ t . is ( stderr , '' ) ;
37+ t . is ( exitCode , 1 ) ;
38+ }
39+ } ) ;
40+
1941test ( 'main-async' , async t => {
2042 const { stdout, stderr, exitCode} = await execa ( process . execPath , [ './fixtures/async.js' ] ) ;
2143 t . is ( stdout , 'foo\nbar\nquux' ) ;
2244 t . is ( stderr , '' ) ;
2345 t . is ( exitCode , 0 ) ;
2446} ) ;
2547
48+ test ( 'main-async with exitCode' , async t => {
49+ try {
50+ await execa ( process . execPath , [ './fixtures/async-exit-code.js' ] ) ;
51+ t . fail ( ) ;
52+ } catch ( { stdout, stderr, exitCode} ) {
53+ t . is ( stdout , 'foo\nbar\nquux' ) ;
54+ t . is ( stderr , '' ) ;
55+ t . is ( exitCode , 1 ) ;
56+ }
57+ } ) ;
58+
2659test ( 'main-async-notice' , async t => {
2760 const { stdout, stderr, exitCode} = await execa ( process . execPath , [ './fixtures/async.js' ] , {
2861 env : {
@@ -34,11 +67,27 @@ test('main-async-notice', async t => {
3467 t . is ( exitCode , 0 ) ;
3568} ) ;
3669
70+ test ( 'main-async-notice with exitCode' , async t => {
71+ try {
72+ await execa ( process . execPath , [ './fixtures/async-exit-code.js' ] , {
73+ env : {
74+ EXIT_HOOK_SYNC : '1' ,
75+ } ,
76+ } ) ;
77+ t . fail ( ) ;
78+ } catch ( { stdout, stderr, exitCode} ) {
79+ t . is ( stdout , 'foo\nbar' ) ;
80+ t . regex ( stderr , / S Y N C H R O N O U S T E R M I N A T I O N N O T I C E / ) ;
81+ t . is ( exitCode , 1 ) ;
82+ }
83+ } ) ;
84+
3785test ( 'listener count' , t => {
86+ console . log ( process . listeners ( 'exit' ) [ 0 ] . toString ( ) )
3887 t . is ( process . listenerCount ( 'exit' ) , 0 ) ;
3988
40- const unsubscribe1 = exitHook ( ( ) => { } ) ;
41- const unsubscribe2 = exitHook ( ( ) => { } ) ;
89+ const unsubscribe1 = exitHook ( ( ) => { } ) ;
90+ const unsubscribe2 = exitHook ( ( ) => { } ) ;
4291 t . is ( process . listenerCount ( 'exit' ) , 1 ) ;
4392
4493 // Remove all listeners
@@ -47,7 +96,7 @@ test('listener count', t => {
4796 t . is ( process . listenerCount ( 'exit' ) , 1 ) ;
4897
4998 // Re-add listener
50- const unsubscribe3 = exitHook ( ( ) => { } ) ;
99+ const unsubscribe3 = exitHook ( ( ) => { } ) ;
51100 t . is ( process . listenerCount ( 'exit' ) , 1 ) ;
52101
53102 // Remove again
@@ -56,7 +105,7 @@ test('listener count', t => {
56105
57106 // Add async style listener
58107 const unsubscribe4 = asyncExitHook (
59- async ( ) => { } ,
108+ async ( ) => { } ,
60109 {
61110 wait : 100 ,
62111 } ,
0 commit comments