• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1'use strict';
2const common = require('../common');
3
4// Ensures that child_process.fork can accept string
5// variant of stdio parameter in options object and
6// throws a TypeError when given an unexpected string
7
8const assert = require('assert');
9const fork = require('child_process').fork;
10const fixtures = require('../common/fixtures');
11
12const childScript = fixtures.path('child-process-spawn-node');
13const malFormedOpts = { stdio: '33' };
14const payload = { hello: 'world' };
15
16assert.throws(
17  () => fork(childScript, malFormedOpts),
18  { code: 'ERR_INVALID_OPT_VALUE', name: 'TypeError' });
19
20function test(stringVariant) {
21  const child = fork(childScript, { stdio: stringVariant });
22
23  child.on('message', common.mustCall((message) => {
24    assert.deepStrictEqual(message, { foo: 'bar' });
25  }));
26
27  child.send(payload);
28
29  child.on('exit', common.mustCall((code) => assert.strictEqual(code, 0)));
30}
31
32['pipe', 'inherit', 'ignore'].forEach(test);
33