-
-
Notifications
You must be signed in to change notification settings - Fork 35.4k
Expand file tree
/
Copy pathtest-stream-writable-end-cb-after-end.js
More file actions
74 lines (62 loc) Β· 1.99 KB
/
test-stream-writable-end-cb-after-end.js
File metadata and controls
74 lines (62 loc) Β· 1.99 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
'use strict';
// Regression test for https://github.com/nodejs/node/issues/33684
// Calling `.end(cb)` on a stream that has already been ended must invoke
// the user-supplied callback with ERR_STREAM_WRITE_AFTER_END, mirroring
// the behavior of `.write(chunk, cb)` after end and `.end(chunk, cb)`
// after end.
const common = require('../common');
const assert = require('assert');
const { Writable } = require('stream');
{
// `.end()` followed by `.end(cb)` β cb must receive ERR_STREAM_WRITE_AFTER_END.
const w = new Writable({
write(chunk, encoding, cb) { cb(); },
});
w.end();
w.end(common.mustCall((err) => {
assert.ok(err);
assert.strictEqual(err.code, 'ERR_STREAM_WRITE_AFTER_END');
}));
}
{
// `.end()` followed by `.end('chunk', cb)` β cb must receive
// ERR_STREAM_WRITE_AFTER_END (existing behavior, included for parity).
const w = new Writable({
write(chunk, encoding, cb) { cb(); },
});
w.on('error', common.mustCall((err) => {
assert.strictEqual(err.code, 'ERR_STREAM_WRITE_AFTER_END');
}));
w.end();
w.end('chunk', common.mustCall((err) => {
assert.ok(err);
assert.strictEqual(err.code, 'ERR_STREAM_WRITE_AFTER_END');
}));
}
{
// `.write(chunk, cb)` after end calls cb with ERR_STREAM_WRITE_AFTER_END β
// sanity check confirming that `.end(cb)` is now consistent with this path.
const w = new Writable({
write(chunk, encoding, cb) { cb(); },
});
w.on('error', common.mustCall((err) => {
assert.strictEqual(err.code, 'ERR_STREAM_WRITE_AFTER_END');
}));
w.end();
w.write('chunk', common.mustCall((err) => {
assert.ok(err);
assert.strictEqual(err.code, 'ERR_STREAM_WRITE_AFTER_END');
}));
}
{
// `.end(null, encoding, cb)` after end β cb must receive
// ERR_STREAM_WRITE_AFTER_END.
const w = new Writable({
write(chunk, encoding, cb) { cb(); },
});
w.end();
w.end(null, null, common.mustCall((err) => {
assert.ok(err);
assert.strictEqual(err.code, 'ERR_STREAM_WRITE_AFTER_END');
}));
}