| 'use strict'; |
| const common = require('../common'); |
| const cp = require('child_process'); |
| const assert = require('assert'); |
| |
| // Windows' `echo` command is a built-in shell command and not an external |
| // executable like on *nix |
| const opts = { shell: common.isWindows }; |
| |
| const p = cp.spawn('echo', [], opts); |
| |
| p.on('close', common.mustCall((code, signal) => { |
| assert.strictEqual(code, 0); |
| assert.strictEqual(signal, null); |
| spawnWithReadable(); |
| })); |
| |
| p.stdout.read(); |
| |
| const spawnWithReadable = () => { |
| const buffer = []; |
| const p = cp.spawn('echo', ['123'], opts); |
| p.on('close', common.mustCall((code, signal) => { |
| assert.strictEqual(code, 0); |
| assert.strictEqual(signal, null); |
| assert.strictEqual(Buffer.concat(buffer).toString().trim(), '123'); |
| })); |
| p.stdout.on('readable', () => { |
| let buf; |
| while (buf = p.stdout.read()) |
| buffer.push(buf); |
| }); |
| }; |