* `cwd` {String} Current working directory of the child process
* `input` {String|Buffer} The value which will be passed as stdin to the spawned process
- supplying this value will override `stdio[0]`
- * `stdio` {Array} Child's stdio configuration.
+ * `stdio` {Array} Child's stdio configuration. (Default: 'pipe')
+ - `stderr` by default will be output to the parent process' stderr unless
+ `stdio` is specified
* `env` {Object} Environment key-value pairs
* `uid` {Number} Sets the user identity of the process. (See setuid(2).)
* `gid` {Number} Sets the group identity of the process. (See setgid(2).)
* `cwd` {String} Current working directory of the child process
* `input` {String|Buffer} The value which will be passed as stdin to the spawned process
- supplying this value will override `stdio[0]`
- * `stdio` {Array} Child's stdio configuration.
+ * `stdio` {Array} Child's stdio configuration. (Default: 'pipe')
+ - `stderr` by default will be output to the parent process' stderr unless
+ `stdio` is specified
* `env` {Object} Environment key-value pairs
* `uid` {Number} Sets the user identity of the process. (See setuid(2).)
* `gid` {Number} Sets the group identity of the process. (See setgid(2).)
function execFileSync(/*command, options*/) {
- var ret = spawnSync.apply(null, arguments);
+ var opts = normalizeSpawnArguments.apply(null, arguments);
+ var inheritStderr = !!!opts.options.stdio;
+
+ var ret = spawnSync(opts.file, opts.args.slice(1), opts.options);
+
+ if (inheritStderr)
+ process.stderr.write(ret.stderr);
var err = checkExecSyncError(ret);
function execSync(/*comand, options*/) {
var opts = normalizeExecArgs.apply(null, arguments);
+ var inheritStderr = opts.options ? !!!opts.options.stdio : true;
+
var ret = spawnSync(opts.file, opts.args, opts.options);
ret.cmd = opts.cmd;
+ if (inheritStderr)
+ process.stderr.write(ret.stderr);
+
var err = checkExecSyncError(ret);
if (err)
return fn.apply(this, arguments);
};
};
+
+exports.checkSpawnSyncRet = function(ret) {
+ assert.strictEqual(ret.status, 0);
+ assert.strictEqual(ret.error, undefined);
+};
var spawnSync = require('child_process').spawnSync;
-function checkRet(ret) {
- assert.strictEqual(ret.status, 0);
- assert.strictEqual(ret.error, undefined);
-}
-
var msgOut = 'this is stdout';
var msgErr = 'this is stderr';
switch (process.argv[3]) {
case '1':
ret = spawnSync(process.execPath, args, { stdio: 'inherit' });
- checkRet(ret);
+ common.checkSpawnSyncRet(ret);
break;
case '2':
ret = spawnSync(process.execPath, args, {
stdio: ['inherit', 'inherit', 'inherit']
});
- checkRet(ret);
+ common.checkSpawnSyncRet(ret);
break;
}
process.exit(0);
function verifyBufOutput(ret) {
- checkRet(ret);
+ common.checkSpawnSyncRet(ret);
assert.deepEqual(ret.stdout, msgOutBuf);
assert.deepEqual(ret.stderr, msgErrBuf);
}
ret = spawnSync('cat', [], options);
-checkRet(ret);
+common.checkSpawnSyncRet(ret);
assert.strictEqual(ret.stdout.toString('utf8'), options.input);
assert.strictEqual(ret.stderr.toString('utf8'), '');
ret = spawnSync('cat', [], options);
-checkRet(ret);
+common.checkSpawnSyncRet(ret);
assert.deepEqual(ret.stdout, options.input);
assert.deepEqual(ret.stderr, new Buffer(''));
ret = spawnSync(process.execPath, args, { encoding: 'utf8' });
-checkRet(ret);
+common.checkSpawnSyncRet(ret);
assert.strictEqual(ret.stdout, msgOut + '\n');
assert.strictEqual(ret.stderr, msgErr + '\n');