0
0
mirror of https://github.com/nodejs/node.git synced 2024-11-21 21:19:50 +01:00
nodejs/test/parallel/test-stream-readable-add-chunk-during-data.js
Anna Henningsen c1ef122e98 stream: allow using .push()/.unshift() during once('data')
Previously, the `.push()` or `.unshift()` call would just have jumped
straight to emitting a `'data'` event, even if there were no listeners,
effectively just silently dropping the chunk.

PR-URL: https://github.com/nodejs/node/pull/34957
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Denys Otrishko <shishugi@gmail.com>
Reviewed-By: Robert Nagy <ronagy@icloud.com>
Reviewed-By: Ricky Zhou <0x19951125@gmail.com>
2020-08-30 08:42:33 -07:00

22 lines
608 B
JavaScript

'use strict';
const common = require('../common');
const assert = require('assert');
const { Readable } = require('stream');
// Verify that .push() and .unshift() can be called from 'data' listeners.
for (const method of ['push', 'unshift']) {
const r = new Readable({ read() {} });
r.once('data', common.mustCall((chunk) => {
assert.strictEqual(r.readableLength, 0);
r[method](chunk);
assert.strictEqual(r.readableLength, chunk.length);
r.on('data', common.mustCall((chunk) => {
assert.strictEqual(chunk.toString(), 'Hello, world');
}));
}));
r.push('Hello, world');
}