@ -1,11 +1,10 @@
'use strict' ;
// This test asserts that Stream.prototype.pipe does not leave listeners
// hanging on the source or dest.
require ( '../common' ) ;
var stream = require ( 'stream' ) ;
var assert = require ( 'assert' ) ;
var util = require ( 'util' ) ;
const stream = require ( 'stream' ) ;
const assert = require ( 'assert' ) ;
const util = require ( 'util' ) ;
function Writable ( ) {
this . writable = true ;
@ -33,20 +32,20 @@ function Duplex() {
}
util . inherits ( Duplex , Writable ) ;
var i = 0 ;
var limit = 100 ;
let i = 0 ;
const limit = 100 ;
var w = new Writable ( ) ;
let w = new Writable ( ) ;
var r ;
let r ;
for ( i = 0 ; i < limit ; i ++ ) {
r = new Readable ( ) ;
r . pipe ( w ) ;
r . emit ( 'end' ) ;
}
assert . e qual( 0 , r . listeners ( 'end' ) . length ) ;
assert . e qual( limit , w . endCalls ) ;
assert . strictE qual( 0 , r . listeners ( 'end' ) . length ) ;
assert . strictE qual( limit , w . endCalls ) ;
w . endCalls = 0 ;
@ -55,8 +54,8 @@ for (i = 0; i < limit; i++) {
r . pipe ( w ) ;
r . emit ( 'close' ) ;
}
assert . e qual( 0 , r . listeners ( 'close' ) . length ) ;
assert . e qual( limit , w . endCalls ) ;
assert . strictE qual( 0 , r . listeners ( 'close' ) . length ) ;
assert . strictE qual( limit , w . endCalls ) ;
w . endCalls = 0 ;
@ -67,36 +66,37 @@ for (i = 0; i < limit; i++) {
r . pipe ( w ) ;
w . emit ( 'close' ) ;
}
assert . e qual( 0 , w . listeners ( 'close' ) . length ) ;
assert . strictE qual( 0 , w . listeners ( 'close' ) . length ) ;
r = new Readable ( ) ;
w = new Writable ( ) ;
var d = new Duplex ( ) ;
const d = new Duplex ( ) ;
r . pipe ( d ) ; // pipeline A
d . pipe ( w ) ; // pipeline B
assert . equal ( r . listeners ( 'end' ) . length , 2 ) ; // A.onend, A.cleanup
assert . equal ( r . listeners ( 'close' ) . length , 2 ) ; // A.onclose, A.cleanup
assert . equal ( d . listeners ( 'end' ) . length , 2 ) ; // B.onend, B.cleanup
assert . equal ( d . listeners ( 'close' ) . length , 3 ) ; // A.cleanup, B.onclose, B.cleanup
assert . equal ( w . listeners ( 'end' ) . length , 0 ) ;
assert . equal ( w . listeners ( 'close' ) . length , 1 ) ; // B.cleanup
assert . strictEqual ( r . listeners ( 'end' ) . length , 2 ) ; // A.onend, A.cleanup
assert . strictEqual ( r . listeners ( 'close' ) . length , 2 ) ; // A.onclose, A.cleanup
assert . strictEqual ( d . listeners ( 'end' ) . length , 2 ) ; // B.onend, B.cleanup
// A.cleanup, B.onclose, B.cleanup
assert . strictEqual ( d . listeners ( 'close' ) . length , 3 ) ;
assert . strictEqual ( w . listeners ( 'end' ) . length , 0 ) ;
assert . strictEqual ( w . listeners ( 'close' ) . length , 1 ) ; // B.cleanup
r . emit ( 'end' ) ;
assert . e qual( d . endCalls , 1 ) ;
assert . e qual( w . endCalls , 0 ) ;
assert . e qual( r . listeners ( 'end' ) . length , 0 ) ;
assert . e qual( r . listeners ( 'close' ) . length , 0 ) ;
assert . e qual( d . listeners ( 'end' ) . length , 2 ) ; // B.onend, B.cleanup
assert . e qual( d . listeners ( 'close' ) . length , 2 ) ; // B.onclose, B.cleanup
assert . e qual( w . listeners ( 'end' ) . length , 0 ) ;
assert . e qual( w . listeners ( 'close' ) . length , 1 ) ; // B.cleanup
assert . strictE qual( d . endCalls , 1 ) ;
assert . strictE qual( w . endCalls , 0 ) ;
assert . strictE qual( r . listeners ( 'end' ) . length , 0 ) ;
assert . strictE qual( r . listeners ( 'close' ) . length , 0 ) ;
assert . strictE qual( d . listeners ( 'end' ) . length , 2 ) ; // B.onend, B.cleanup
assert . strictE qual( d . listeners ( 'close' ) . length , 2 ) ; // B.onclose, B.cleanup
assert . strictE qual( w . listeners ( 'end' ) . length , 0 ) ;
assert . strictE qual( w . listeners ( 'close' ) . length , 1 ) ; // B.cleanup
d . emit ( 'end' ) ;
assert . e qual( d . endCalls , 1 ) ;
assert . e qual( w . endCalls , 1 ) ;
assert . e qual( r . listeners ( 'end' ) . length , 0 ) ;
assert . e qual( r . listeners ( 'close' ) . length , 0 ) ;
assert . e qual( d . listeners ( 'end' ) . length , 0 ) ;
assert . e qual( d . listeners ( 'close' ) . length , 0 ) ;
assert . e qual( w . listeners ( 'end' ) . length , 0 ) ;
assert . e qual( w . listeners ( 'close' ) . length , 0 ) ;
assert . strictE qual( d . endCalls , 1 ) ;
assert . strictE qual( w . endCalls , 1 ) ;
assert . strictE qual( r . listeners ( 'end' ) . length , 0 ) ;
assert . strictE qual( r . listeners ( 'close' ) . length , 0 ) ;
assert . strictE qual( d . listeners ( 'end' ) . length , 0 ) ;
assert . strictE qual( d . listeners ( 'close' ) . length , 0 ) ;
assert . strictE qual( w . listeners ( 'end' ) . length , 0 ) ;
assert . strictE qual( w . listeners ( 'close' ) . length , 0 ) ;