@@ -319,7 +319,7 @@ describe('server: listener', () => {
319
319
const listener = new Listener ( { } )
320
320
321
321
const error = new Error ( 'server error' )
322
- expect ( ( ) => listener . serverErrorHandler ( error ) ) . toThrow ( error )
322
+ expect ( listener . serverErrorHandler ( error ) ) . rejects . toThrow ( error )
323
323
} )
324
324
325
325
test ( 'should throw address in use error' , ( ) => {
@@ -329,7 +329,7 @@ describe('server: listener', () => {
329
329
330
330
const addressInUse = new Error ( )
331
331
addressInUse . code = 'EADDRINUSE'
332
- expect ( ( ) => listener . serverErrorHandler ( addressInUse ) ) . toThrow ( 'Address `localhost:3000` is already in use.' )
332
+ expect ( listener . serverErrorHandler ( addressInUse ) ) . rejects . toThrow ( 'Address `localhost:3000` is already in use.' )
333
333
} )
334
334
335
335
test ( 'should throw address in use error for socket' , ( ) => {
@@ -338,7 +338,7 @@ describe('server: listener', () => {
338
338
339
339
const addressInUse = new Error ( )
340
340
addressInUse . code = 'EADDRINUSE'
341
- expect ( ( ) => listener . serverErrorHandler ( addressInUse ) ) . toThrow ( 'Address `nuxt.socket` is already in use.' )
341
+ expect ( listener . serverErrorHandler ( addressInUse ) ) . rejects . toThrow ( 'Address `nuxt.socket` is already in use.' )
342
342
} )
343
343
344
344
test ( 'should fallback to a random port in address in use error' , async ( ) => {
@@ -362,6 +362,28 @@ describe('server: listener', () => {
362
362
expect ( listener . listen ) . toBeCalledTimes ( 1 )
363
363
} )
364
364
365
+ test ( 'should reuse last random port' , async ( ) => {
366
+ const listener = new Listener ( { dev : true , host : 'localhost' , port : 3000 } )
367
+ listener . host = 'localhost'
368
+ listener . close = jest . fn ( )
369
+ listener . listen = function ( ) {
370
+ if ( this . port === '0' ) {
371
+ this . port = Math . random ( )
372
+ }
373
+ }
374
+
375
+ const addressInUse = new Error ( )
376
+ addressInUse . code = 'EADDRINUSE'
377
+
378
+ await listener . serverErrorHandler ( addressInUse ) . catch ( ( ) => { } )
379
+ const port1 = listener . port
380
+ await listener . serverErrorHandler ( addressInUse ) . catch ( ( ) => { } )
381
+ const port2 = listener . port
382
+
383
+ expect ( port1 ) . not . toBe ( 3000 )
384
+ expect ( port2 ) . toBe ( port1 )
385
+ } )
386
+
365
387
test ( 'should close server' , async ( ) => {
366
388
const listener = new Listener ( { } )
367
389
const server = mockServer ( )
0 commit comments