Skip to content

Commit

Permalink
child_process: add debug and error details
Browse files Browse the repository at this point in the history
This commit adds debug() calls to spawn() and spawnSync(), and
attaches additional information to Error objects.

Fixes: #720
PR-URL: #721
Reviewed-By: Colin Ihrig <[email protected]>
Reviewed-By: Trevor Norris <[email protected]>
  • Loading branch information
remixz authored and cjihrig committed Feb 5, 2015
1 parent 6f7a978 commit 9a8f186
Showing 1 changed file with 12 additions and 2 deletions.
14 changes: 12 additions & 2 deletions lib/child_process.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ const net = require('net');
const dgram = require('dgram');
const assert = require('assert');
const util = require('util');
const debug = util.debuglog('child_process');

const Process = process.binding('process_wrap').Process;
const WriteWrap = process.binding('stream_wrap').WriteWrap;
Expand Down Expand Up @@ -958,6 +959,8 @@ var spawn = exports.spawn = function(/*file, args, options*/) {
var options = opts.options;
var child = new ChildProcess();

debug('spawn', opts.args, options);

child.spawn({
file: opts.file,
args: opts.args,
Expand Down Expand Up @@ -1035,6 +1038,7 @@ function ChildProcess() {
if (self.spawnfile)
err.path = self.spawnfile;

err.spawnargs = self.spawnargs.slice(1);
self.emit('error', err);
} else {
self.emit('exit', self.exitCode, self.signalCode);
Expand Down Expand Up @@ -1097,6 +1101,7 @@ ChildProcess.prototype.spawn = function(options) {
}

this.spawnfile = options.file;
this.spawnargs = options.args;

var err = this._handle.spawn(options);

Expand Down Expand Up @@ -1242,6 +1247,8 @@ function spawnSync(/*file, args, options*/) {

var i;

debug('spawnSync', opts.args, options);

options.file = opts.file;
options.args = opts.args;
options.envPairs = opts.envPairs;
Expand Down Expand Up @@ -1289,8 +1296,11 @@ function spawnSync(/*file, args, options*/) {
result.stdout = result.output && result.output[1];
result.stderr = result.output && result.output[2];

if (result.error)
result.error = errnoException(result.error, 'spawnSync');
if (result.error) {
result.error = errnoException(result.error, 'spawnSync ' + opts.file);
result.error.path = opts.file;
result.error.spawnargs = opts.args.slice(1);
}

util._extend(result, opts);

Expand Down

0 comments on commit 9a8f186

Please sign in to comment.