Skip to content

Commit ba4a3ed

Browse files
Italo A. CasasMyles Borins
authored andcommitted
test: writable stream ending state
Add a test for _writableState.ending, when ending becomes true, but the stream is not finished/ended yet. PR-URL: #8707 Reviewed-By: Colin Ihrig <[email protected]> Reviewed-By: Matteo Collina <[email protected]> Related: #8686
1 parent 80a26c7 commit ba4a3ed

File tree

2 files changed

+35
-0
lines changed

2 files changed

+35
-0
lines changed

‎lib/_stream_writable.js‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ function WritableState(options, stream){
4343
// cast to ints.
4444
this.highWaterMark=~~this.highWaterMark;
4545

46+
// drain event flag.
4647
this.needDrain=false;
4748
// at the start of calling end()
4849
this.ending=false;
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
'use strict';
2+
3+
require('../common');
4+
5+
constassert=require('assert');
6+
conststream=require('stream');
7+
8+
constwritable=newstream.Writable();
9+
10+
functiontestStates(ending,finished,ended){
11+
assert.strictEqual(writable._writableState.ending,ending);
12+
assert.strictEqual(writable._writableState.finished,finished);
13+
assert.strictEqual(writable._writableState.ended,ended);
14+
}
15+
16+
writable._write=(chunk,encoding,cb)=>{
17+
// ending, finished, ended start in false.
18+
testStates(false,false,false);
19+
cb();
20+
};
21+
22+
writable.on('finish',()=>{
23+
// ending, finished, ended = true.
24+
testStates(true,true,true);
25+
});
26+
27+
writable.end('testing function end()',()=>{
28+
// ending, finished, ended = true.
29+
testStates(true,true,true);
30+
});
31+
32+
// ending, ended = true.
33+
// finished = false.
34+
testStates(true,false,true);

0 commit comments

Comments
(0)