diff --git a/test/parallel/test-child-process-custom-fds.js b/test/parallel/test-child-process-custom-fds.js new file mode 100644 index 00000000000..2958a6f8070 --- /dev/null +++ b/test/parallel/test-child-process-custom-fds.js @@ -0,0 +1,33 @@ +'use strict'; +const common = require('../common'); +const assert = require('assert'); + +// Verify that customFds is used if stdio is not provided. +{ + const msg = 'child_process: options.customFds option is deprecated. ' + + 'Use options.stdio instead.'; + common.expectWarning('DeprecationWarning', msg); + + const customFds = [-1, process.stdout.fd, process.stderr.fd]; + const child = common.spawnSyncPwd({ customFds }); + + assert.deepStrictEqual(child.options.customFds, customFds); + assert.deepStrictEqual(child.options.stdio, [ + { type: 'pipe', readable: true, writable: false }, + { type: 'fd', fd: process.stdout.fd }, + { type: 'fd', fd: process.stderr.fd } + ]); +} + +// Verify that customFds is ignored when stdio is present. +{ + const customFds = [0, 1, 2]; + const child = common.spawnSyncPwd({ customFds, stdio: 'pipe' }); + + assert.deepStrictEqual(child.options.customFds, customFds); + assert.deepStrictEqual(child.options.stdio, [ + { type: 'pipe', readable: true, writable: false }, + { type: 'pipe', readable: false, writable: true }, + { type: 'pipe', readable: false, writable: true } + ]); +}