@@ -306,190 +306,192 @@ describe('compression()', function () {
306306 . expect ( 200 , done )
307307 } )
308308
309- it ( 'should support removeListener("drain") after on("drain"); stream present' , function ( done ) {
310- // compression doesn't proxy listenerCount() to the compression stream, so
311- // instead watch for a MaxListenersExceededWarning
312- var hasWarned = false
313- var onWarning = function ( ) {
314- hasWarned = true
315- }
316- process . on ( 'warning' , onWarning )
317- var server = createServer ( { threshold : 0 } , function ( req , res ) {
318- res . setHeader ( 'Content-Type' , 'text/plain' )
319- var len = bytes ( '40kb' )
320- var buf = Buffer . alloc ( len , '.' )
321- res . write ( buf )
322- for ( var times = 0 ; times < res . getMaxListeners ( ) + 1 ; times ++ ) {
323- var listener = function ( ) { }
324- res . on ( 'drain' , listener )
325- res . removeListener ( 'drain' , listener )
309+ describe ( 'listeners' , function ( ) {
310+ it ( 'should support removeListener("drain") after on("drain"); stream present' , function ( done ) {
311+ // compression doesn't proxy listenerCount() to the compression stream, so
312+ // instead watch for a MaxListenersExceededWarning
313+ var hasWarned = false
314+ var onWarning = function ( ) {
315+ hasWarned = true
326316 }
327- res . end ( )
328- } )
329-
330- request ( server )
331- . get ( '/' )
332- . set ( 'Accept-Encoding' , 'gzip' )
333- . expect ( function ( ) {
334- process . removeListener ( 'warning' , onWarning )
335- assert . ok ( ! hasWarned )
317+ process . on ( 'warning' , onWarning )
318+ var server = createServer ( { threshold : 0 } , function ( req , res ) {
319+ res . setHeader ( 'Content-Type' , 'text/plain' )
320+ var len = bytes ( '40kb' )
321+ var buf = Buffer . alloc ( len , '.' )
322+ res . write ( buf )
323+ for ( var times = 0 ; times < res . getMaxListeners ( ) + 1 ; times ++ ) {
324+ var listener = function ( ) { }
325+ res . on ( 'drain' , listener )
326+ res . removeListener ( 'drain' , listener )
327+ }
328+ res . end ( )
336329 } )
337- . expect ( 200 , done )
338- } )
339330
340- it ( 'should support removeListener("drain") after addListener("drain")' , function ( done ) {
341- var hasWarned = false
342- var onWarning = function ( ) {
343- hasWarned = true
344- }
345- process . on ( 'warning' , onWarning )
346- var server = createServer ( { threshold : 0 } , function ( req , res ) {
347- res . setHeader ( 'Content-Type' , 'text/plain' )
348- var len = bytes ( '40kb' )
349- var buf = Buffer . alloc ( len , '.' )
350- res . write ( buf )
351- for ( var times = 0 ; times < res . getMaxListeners ( ) + 1 ; times ++ ) {
352- var listener = function ( ) { }
353- res . addListener ( 'drain' , listener )
354- res . removeListener ( 'drain' , listener )
355- }
356- res . end ( )
331+ request ( server )
332+ . get ( '/' )
333+ . set ( 'Accept-Encoding' , 'gzip' )
334+ . expect ( function ( ) {
335+ process . removeListener ( 'warning' , onWarning )
336+ assert . ok ( ! hasWarned )
337+ } )
338+ . expect ( 200 , done )
357339 } )
358340
359- request ( server )
360- . get ( '/' )
361- . set ( 'Accept-Encoding' , 'gzip' )
362- . expect ( function ( ) {
363- process . removeListener ( 'warning' , onWarning )
364- assert . ok ( ! hasWarned )
341+ it ( 'should support removeListener("drain") after addListener("drain")' , function ( done ) {
342+ var hasWarned = false
343+ var onWarning = function ( ) {
344+ hasWarned = true
345+ }
346+ process . on ( 'warning' , onWarning )
347+ var server = createServer ( { threshold : 0 } , function ( req , res ) {
348+ res . setHeader ( 'Content-Type' , 'text/plain' )
349+ var len = bytes ( '40kb' )
350+ var buf = Buffer . alloc ( len , '.' )
351+ res . write ( buf )
352+ for ( var times = 0 ; times < res . getMaxListeners ( ) + 1 ; times ++ ) {
353+ var listener = function ( ) { }
354+ res . addListener ( 'drain' , listener )
355+ res . removeListener ( 'drain' , listener )
356+ }
357+ res . end ( )
365358 } )
366- . expect ( 200 , done )
367- } )
368359
369- it ( 'should support off("drain") after addListener("drain")' , function ( done ) {
370- if ( ! require ( 'events' ) . EventEmitter . prototype . off ) { // off was added in Node.js v10
371- this . skip ( )
372- }
373- var hasWarned = false
374- var onWarning = function ( ) {
375- hasWarned = true
376- }
377- process . on ( 'warning' , onWarning )
378- var server = createServer ( { threshold : 0 } , function ( req , res ) {
379- res . setHeader ( 'Content-Type' , 'text/plain' )
380- var len = bytes ( '40kb' )
381- var buf = Buffer . alloc ( len , '.' )
382- res . write ( buf )
383- for ( var times = 0 ; times < res . getMaxListeners ( ) + 1 ; times ++ ) {
384- var listener = function ( ) { }
385- res . addListener ( 'drain' , listener )
386- res . off ( 'drain' , listener )
387- }
388- res . end ( )
360+ request ( server )
361+ . get ( '/' )
362+ . set ( 'Accept-Encoding' , 'gzip' )
363+ . expect ( function ( ) {
364+ process . removeListener ( 'warning' , onWarning )
365+ assert . ok ( ! hasWarned )
366+ } )
367+ . expect ( 200 , done )
389368 } )
390369
391- request ( server )
392- . get ( '/' )
393- . set ( 'Accept-Encoding' , 'gzip' )
394- . expect ( function ( ) {
395- process . removeListener ( 'warning' , onWarning )
396- assert . ok ( ! hasWarned )
370+ it ( 'should support off("drain") after addListener("drain")' , function ( done ) {
371+ if ( ! require ( 'events' ) . EventEmitter . prototype . off ) { // off was added in Node.js v10
372+ this . skip ( )
373+ }
374+ var hasWarned = false
375+ var onWarning = function ( ) {
376+ hasWarned = true
377+ }
378+ process . on ( 'warning' , onWarning )
379+ var server = createServer ( { threshold : 0 } , function ( req , res ) {
380+ res . setHeader ( 'Content-Type' , 'text/plain' )
381+ var len = bytes ( '40kb' )
382+ var buf = Buffer . alloc ( len , '.' )
383+ res . write ( buf )
384+ for ( var times = 0 ; times < res . getMaxListeners ( ) + 1 ; times ++ ) {
385+ var listener = function ( ) { }
386+ res . addListener ( 'drain' , listener )
387+ res . off ( 'drain' , listener )
388+ }
389+ res . end ( )
397390 } )
398- . expect ( 200 , done )
399- } )
400391
401- it ( 'should support removeListener("drain"); buffered' , function ( done ) {
402- // Variant of above tests for scenario when the listener is buffered (stream
403- // is not yet present).
404- var hasWarned = false
405- var onWarning = function ( ) {
406- hasWarned = true
407- }
408- process . on ( 'warning' , onWarning )
409- var server = createServer ( { threshold : 0 } , function ( req , res ) {
410- res . setHeader ( 'Content-Type' , 'text/plain' )
411- res . on ( 'end' , function ( ) { } )
412- for ( var times = 0 ; times < res . getMaxListeners ( ) + 1 ; times ++ ) {
413- var listener = function ( ) { }
414- res . on ( 'drain' , listener )
415- res . removeListener ( 'drain' , listener )
416- }
417- res . end ( )
392+ request ( server )
393+ . get ( '/' )
394+ . set ( 'Accept-Encoding' , 'gzip' )
395+ . expect ( function ( ) {
396+ process . removeListener ( 'warning' , onWarning )
397+ assert . ok ( ! hasWarned )
398+ } )
399+ . expect ( 200 , done )
418400 } )
419401
420- request ( server )
421- . get ( '/' )
422- . set ( 'Accept-Encoding' , 'gzip' )
423- . expect ( function ( ) {
424- process . removeListener ( 'warning' , onWarning )
425- assert . ok ( ! hasWarned )
402+ it ( 'should support removeListener("drain"); buffered' , function ( done ) {
403+ // Variant of above tests for scenario when the listener is buffered (stream
404+ // is not yet present).
405+ var hasWarned = false
406+ var onWarning = function ( ) {
407+ hasWarned = true
408+ }
409+ process . on ( 'warning' , onWarning )
410+ var server = createServer ( { threshold : 0 } , function ( req , res ) {
411+ res . setHeader ( 'Content-Type' , 'text/plain' )
412+ res . on ( 'end' , function ( ) { } )
413+ for ( var times = 0 ; times < res . getMaxListeners ( ) + 1 ; times ++ ) {
414+ var listener = function ( ) { }
415+ res . on ( 'drain' , listener )
416+ res . removeListener ( 'drain' , listener )
417+ }
418+ res . end ( )
426419 } )
427- . expect ( 200 , done )
428- } )
429420
430- it ( 'should support removeListener("drain"); multiple bindings of same listener, buffered' , function ( done ) {
431- // Variant of above test for scenario when the listener is buffered (stream
432- // is not yet present) and the same listener is added two or more times.
433- var hasWarned = false
434- var onWarning = function ( ) {
435- hasWarned = true
436- }
437- process . on ( 'warning' , onWarning )
438- var server = createServer ( { threshold : 0 } , function ( req , res ) {
439- res . setHeader ( 'Content-Type' , 'text/plain' )
440- for ( var times = 0 ; times < res . getMaxListeners ( ) + 1 ; times ++ ) {
441- var listener = function ( ) { }
442- res . on ( 'drain' , listener )
443- res . on ( 'drain' , listener )
444- res . removeListener ( 'drain' , listener )
445- }
446- res . end ( )
421+ request ( server )
422+ . get ( '/' )
423+ . set ( 'Accept-Encoding' , 'gzip' )
424+ . expect ( function ( ) {
425+ process . removeListener ( 'warning' , onWarning )
426+ assert . ok ( ! hasWarned )
427+ } )
428+ . expect ( 200 , done )
447429 } )
448430
449- request ( server )
450- . get ( '/' )
451- . set ( 'Accept-Encoding' , 'gzip' )
452- . expect ( function ( ) {
453- process . removeListener ( 'warning' , onWarning )
454- assert . ok ( ! hasWarned )
431+ it ( 'should support removeListener("drain"); multiple bindings of same listener, buffered' , function ( done ) {
432+ // Variant of above test for scenario when the listener is buffered (stream
433+ // is not yet present) and the same listener is added two or more times.
434+ var hasWarned = false
435+ var onWarning = function ( ) {
436+ hasWarned = true
437+ }
438+ process . on ( 'warning' , onWarning )
439+ var server = createServer ( { threshold : 0 } , function ( req , res ) {
440+ res . setHeader ( 'Content-Type' , 'text/plain' )
441+ for ( var times = 0 ; times < res . getMaxListeners ( ) + 1 ; times ++ ) {
442+ var listener = function ( ) { }
443+ res . on ( 'drain' , listener )
444+ res . on ( 'drain' , listener )
445+ res . removeListener ( 'drain' , listener )
446+ }
447+ res . end ( )
455448 } )
456- . expect ( 200 , done )
457- } )
458449
459- it ( 'should not leak event listeners when res.unpipe() is used (#135)' , function ( done ) {
460- // unpipe and stream.Readable were added in v0.9.4
461- var stream = require ( 'stream' )
462- if ( ! ( stream . Readable && stream . Readable . prototype . unpipe ) ) {
463- this . skip ( )
464- }
465-
466- var hasWarned = false
467- var onWarning = function ( ) {
468- hasWarned = true
469- }
470- var server = createServer ( { threshold : 0 } , function ( req , res ) {
471- var times = 0
472- var int = setInterval ( function ( ) {
473- var rs = require ( 'fs' ) . createReadStream ( 'does not exist' )
474- rs . on ( 'error' , function ( e ) {
475- rs . unpipe ( res )
450+ request ( server )
451+ . get ( '/' )
452+ . set ( 'Accept-Encoding' , 'gzip' )
453+ . expect ( function ( ) {
454+ process . removeListener ( 'warning' , onWarning )
455+ assert . ok ( ! hasWarned )
476456 } )
477- rs . pipe ( res )
478- if ( times ++ > res . getMaxListeners ( ) ) {
479- clearInterval ( int )
480- res . end ( 'hello, world' )
481- }
482- } )
457+ . expect ( 200 , done )
483458 } )
484459
485- request ( server )
486- . get ( '/' )
487- . set ( 'Accept-Encoding' , 'gzip' )
488- . expect ( function ( ) {
489- process . removeListener ( 'warning' , onWarning )
490- assert . ok ( ! hasWarned )
460+ it ( 'should not leak event listeners when res.unpipe() is used (#135)' , function ( done ) {
461+ // unpipe and stream.Readable were added in v0.9.4
462+ var stream = require ( 'stream' )
463+ if ( ! ( stream . Readable && stream . Readable . prototype . unpipe ) ) {
464+ this . skip ( )
465+ }
466+
467+ var hasWarned = false
468+ var onWarning = function ( ) {
469+ hasWarned = true
470+ }
471+ var server = createServer ( { threshold : 0 } , function ( req , res ) {
472+ var times = 0
473+ var int = setInterval ( function ( ) {
474+ var rs = require ( 'fs' ) . createReadStream ( 'does not exist' )
475+ rs . on ( 'error' , function ( e ) {
476+ rs . unpipe ( res )
477+ } )
478+ rs . pipe ( res )
479+ if ( times ++ > res . getMaxListeners ( ) ) {
480+ clearInterval ( int )
481+ res . end ( 'hello, world' )
482+ }
483+ } )
491484 } )
492- . expect ( 200 , done )
485+
486+ request ( server )
487+ . get ( '/' )
488+ . set ( 'Accept-Encoding' , 'gzip' )
489+ . expect ( function ( ) {
490+ process . removeListener ( 'warning' , onWarning )
491+ assert . ok ( ! hasWarned )
492+ } )
493+ . expect ( 200 , done )
494+ } )
493495 } )
494496
495497 describe ( 'http2' , function ( ) {
0 commit comments