1'use strict'; 2const common = require('../common'); 3const cp = require('child_process'); 4const assert = require('assert'); 5 6// Windows' `echo` command is a built-in shell command and not an external 7// executable like on *nix 8const opts = { shell: common.isWindows }; 9 10const p = cp.spawn('echo', [], opts); 11 12p.on('close', common.mustCall((code, signal) => { 13 assert.strictEqual(code, 0); 14 assert.strictEqual(signal, null); 15 spawnWithReadable(); 16})); 17 18p.stdout.read(); 19 20const spawnWithReadable = () => { 21 const buffer = []; 22 const p = cp.spawn('echo', ['123'], opts); 23 p.on('close', common.mustCall((code, signal) => { 24 assert.strictEqual(code, 0); 25 assert.strictEqual(signal, null); 26 assert.strictEqual(Buffer.concat(buffer).toString().trim(), '123'); 27 })); 28 p.stdout.on('readable', () => { 29 let buf; 30 while ((buf = p.stdout.read()) !== null) 31 buffer.push(buf); 32 }); 33}; 34