7
7
8
8
import chalk = require( 'chalk' ) ;
9
9
import Emittery = require( 'emittery' ) ;
10
- import exit = require( 'exit' ) ;
11
10
import throat from 'throat' ;
12
11
import type {
13
- SerializableError ,
14
12
Test ,
15
13
TestEvents ,
16
14
TestFileEvent ,
@@ -97,11 +95,10 @@ export default class TestRunner {
97
95
if ( watcher . isInterrupted ( ) ) {
98
96
throw new CancelRun ( ) ;
99
97
}
100
- let sendMessageToJest : TestFileEvent ;
101
-
102
98
// Remove `if(onStart)` in Jest 27
103
99
if ( onStart ) {
104
100
await onStart ( test ) ;
101
+
105
102
return runTest (
106
103
test . path ,
107
104
this . _globalConfig ,
@@ -110,41 +107,42 @@ export default class TestRunner {
110
107
this . _context ,
111
108
undefined ,
112
109
) ;
113
- } else {
114
- // `deepCyclicCopy` used here to avoid mem-leak
115
- sendMessageToJest = ( eventName , args ) =>
116
- this . eventEmitter . emit (
117
- eventName ,
118
- deepCyclicCopy ( args , { keepPrototype : false } ) ,
119
- ) ;
120
-
121
- await this . eventEmitter . emit ( 'test-file-start' , [ test ] ) ;
122
- return runTest (
123
- test . path ,
124
- this . _globalConfig ,
125
- test . context . config ,
126
- test . context . resolver ,
127
- this . _context ,
128
- sendMessageToJest ,
129
- ) ;
130
110
}
111
+
112
+ // `deepCyclicCopy` used here to avoid mem-leak
113
+ const sendMessageToJest : TestFileEvent = ( eventName , args ) =>
114
+ this . eventEmitter . emit (
115
+ eventName ,
116
+ deepCyclicCopy ( args , { keepPrototype : false } ) ,
117
+ ) ;
118
+
119
+ await this . eventEmitter . emit ( 'test-file-start' , [ test ] ) ;
120
+
121
+ return runTest (
122
+ test . path ,
123
+ this . _globalConfig ,
124
+ test . context . config ,
125
+ test . context . resolver ,
126
+ this . _context ,
127
+ sendMessageToJest ,
128
+ ) ;
131
129
} )
132
130
. then ( result => {
133
131
if ( onResult ) {
134
132
return onResult ( test , result ) ;
135
- } else {
136
- return this . eventEmitter . emit ( 'test-file-success' , [
137
- test ,
138
- result ,
139
- ] ) ;
140
133
}
134
+
135
+ return this . eventEmitter . emit ( 'test-file-success' , [
136
+ test ,
137
+ result ,
138
+ ] ) ;
141
139
} )
142
140
. catch ( err => {
143
141
if ( onFailure ) {
144
142
return onFailure ( test , err ) ;
145
- } else {
146
- return this . eventEmitter . emit ( 'test-file-failure' , [ test , err ] ) ;
147
143
}
144
+
145
+ return this . eventEmitter . emit ( 'test-file-failure' , [ test , err ] ) ;
148
146
} ) ,
149
147
) ,
150
148
Promise . resolve ( ) ,
@@ -225,22 +223,6 @@ export default class TestRunner {
225
223
return promise ;
226
224
} ) ;
227
225
228
- const onError = async ( err : SerializableError , test : Test ) => {
229
- // Remove `if(onFailure)` in Jest 27
230
- if ( onFailure ) {
231
- await onFailure ( test , err ) ;
232
- } else {
233
- await this . eventEmitter . emit ( 'test-file-failure' , [ test , err ] ) ;
234
- }
235
- if ( err . type === 'ProcessTerminatedError' ) {
236
- console . error (
237
- 'A worker process has quit unexpectedly! ' +
238
- 'Most likely this is an initialization error.' ,
239
- ) ;
240
- exit ( 1 ) ;
241
- }
242
- } ;
243
-
244
226
const onInterrupt = new Promise ( ( _ , reject ) => {
245
227
watcher . on ( 'change' , state => {
246
228
if ( state . interrupted ) {
@@ -255,14 +237,17 @@ export default class TestRunner {
255
237
. then ( result => {
256
238
if ( onResult ) {
257
239
return onResult ( test , result ) ;
258
- } else {
259
- return this . eventEmitter . emit ( 'test-file-success' , [
260
- test ,
261
- result ,
262
- ] ) ;
263
240
}
241
+
242
+ return this . eventEmitter . emit ( 'test-file-success' , [ test , result ] ) ;
264
243
} )
265
- . catch ( error => onError ( error , test ) ) ,
244
+ . catch ( error => {
245
+ if ( onFailure ) {
246
+ return onFailure ( test , error ) ;
247
+ }
248
+
249
+ return this . eventEmitter . emit ( 'test-file-failure' , [ test , error ] ) ;
250
+ } ) ,
266
251
) ,
267
252
) ;
268
253
@@ -279,6 +264,7 @@ export default class TestRunner {
279
264
) ;
280
265
}
281
266
} ;
267
+
282
268
return Promise . race ( [ runAllTests , onInterrupt ] ) . then ( cleanup , cleanup ) ;
283
269
}
284
270
0 commit comments