function flushStdio(subprocess) {
if (subprocess.stdio == null) return;
subprocess.stdio.forEach(function(stream, fd, stdio) {
- if (!stream || !stream.readable)
+ if (!stream || !stream.readable || stream._readableState.readableListening)
return;
stream.resume();
});
p.on('close', common.mustCall(function(code, signal) {
assert.strictEqual(code, 0);
assert.strictEqual(signal, null);
+ spawnWithReadable();
}));
p.stdout.read();
-setTimeout(function() {
- p.kill();
-}, 100);
+function spawnWithReadable() {
+ const buffer = [];
+ const p = cp.spawn('echo', ['123']);
+ p.on('close', common.mustCall(function(code, signal) {
+ assert.strictEqual(code, 0);
+ assert.strictEqual(signal, null);
+ assert.strictEqual(Buffer.concat(buffer).toString().trim(), '123');
+ }));
+ p.stdout.on('readable', function() {
+ let buf;
+ while (buf = this.read())
+ buffer.push(buf);
+ });
+}