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