• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1'use strict';
2const common = require('../common');
3const assert = require('assert');
4const spawn = require('child_process').spawn;
5
6if (process.argv[2] === 'child') {
7  process.stdout.destroy();
8  process.stderr.destroy();
9  console.log('stdout');
10  process.stdout.write('rocks\n');
11  console.error('stderr');
12  setTimeout(function() {
13    process.stderr.write('rocks too\n');
14  }, 10);
15  return;
16}
17
18const proc = spawn(process.execPath, [__filename, 'child'], { stdio: 'pipe' });
19
20let stdout = '';
21proc.stdout.setEncoding('utf8');
22proc.stdout.on('data', common.mustCallAtLeast(function(chunk) {
23  stdout += chunk;
24}, 1));
25
26let stderr = '';
27proc.stderr.setEncoding('utf8');
28proc.stderr.on('data', common.mustCallAtLeast(function(chunk) {
29  stderr += chunk;
30}, 1));
31
32proc.on('exit', common.mustCall(function(exitCode) {
33  assert.strictEqual(exitCode, 0);
34  assert.strictEqual(stdout, 'stdout\nrocks\n');
35  assert.strictEqual(stderr, 'stderr\nrocks too\n');
36}));
37