File tree Expand file tree Collapse file tree 2 files changed +10
-7
lines changed Expand file tree Collapse file tree 2 files changed +10
-7
lines changed Original file line number Diff line number Diff line change @@ -97,7 +97,7 @@ export default class Xvfb {
97
97
const error = stderr . match ( / \( E E \) (? ! \( E E \) ) ( .+ ?) $ / m) [ 1 ] || stderr
98
98
if ( stderr . includes ( 'already active for display' ) ) {
99
99
if ( ! quiet ) {
100
- console . warn ( `Xvfb: ${ error } ` ) // eslint-disable-line no-console
100
+ console . warn ( `Xvfb: ${ error } ` , Xvfb . process . pid ) // eslint-disable-line no-console
101
101
}
102
102
return
103
103
}
@@ -110,7 +110,7 @@ export default class Xvfb {
110
110
}
111
111
112
112
static stop ( ) {
113
- if ( ! Xvfb . isRunning ( ) ) {
113
+ if ( ! Xvfb . process || Xvfb . closed ) {
114
114
return
115
115
}
116
116
@@ -119,17 +119,19 @@ export default class Xvfb {
119
119
// enable timers if they where faked by a test framework
120
120
enableTimers ( )
121
121
122
+ let closeTimeout
122
123
const waitTimeout = new Promise ( ( resolve ) => {
123
- const timeout = setTimeout ( ( ) => {
124
+ closeTimeout = setTimeout ( ( ) => {
124
125
consola . warn ( `Timeout: Xvfb did not exit after 3s` )
125
126
resolve ( )
126
127
} , 3000 )
127
- timeout . unref ( )
128
+ closeTimeout . unref ( )
128
129
} )
129
130
130
131
const waitClosed = new Promise ( ( resolve ) => {
131
132
const closeInterval = setInterval ( ( ) => {
132
133
if ( Xvfb . closed ) {
134
+ clearTimeout ( closeTimeout )
133
135
clearInterval ( closeInterval )
134
136
resolve ( )
135
137
}
Original file line number Diff line number Diff line change @@ -207,6 +207,7 @@ Fatal server error:
207
207
} )
208
208
209
209
test ( 'should wait on stop for closed to be true' , async ( ) => {
210
+ const spy = jest . spyOn ( console , 'warn' ) . mockImplementation ( ( ) => { } )
210
211
jest . useFakeTimers ( )
211
212
212
213
Xvfb . process = true
@@ -217,6 +218,9 @@ Fatal server error:
217
218
jest . advanceTimersByTime ( 100 )
218
219
219
220
await expect ( stopPromise ) . resolves . toBeUndefined ( )
221
+
222
+ jest . advanceTimersByTime ( 3100 )
223
+ expect ( spy ) . not . toHaveBeenCalled ( )
220
224
} )
221
225
222
226
test ( 'should timeout on stop' , async ( ) => {
@@ -227,9 +231,6 @@ Fatal server error:
227
231
Xvfb . closed = false
228
232
229
233
const stopPromise = Xvfb . stop ( )
230
- Xvfb . closed = true
231
- jest . advanceTimersByTime ( 100 )
232
- await expect ( stopPromise ) . not . resolves
233
234
234
235
jest . advanceTimersByTime ( 3100 )
235
236
await expect ( stopPromise ) . resolves . toBeUndefined ( )
You can’t perform that action at this time.
0 commit comments