Permalink
Browse files

child_process: remove extra newline in errors

checkExecSyncError() creates error objects for execSync() and
execFileSync(). If the child process created stderr output, then
it is attached to the end of the error message. However, stderr
can be an empty Buffer object, which always passes the truthy
check, leading to an extra newline in the error message. This
commit adds a length check, which will work with both strings and
Buffers.

PR-URL: #9343
Reviewed-By: Wyatt Preul <wpreul@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
  • Loading branch information...
cjihrig committed Oct 28, 2016
1 parent 0fb21df commit 49d1c366d85f4b7e321b1d71eabaae59c20b83c5
Showing with 2 additions and 2 deletions.
  1. +1 −1 lib/child_process.js
  2. +1 −1 test/sequential/test-child-process-execsync.js
View
@@ -483,7 +483,7 @@ function checkExecSyncError(ret) {
if (!err) {
var msg = 'Command failed: ';
msg += ret.cmd || ret.args.join(' ');
if (ret.stderr)
if (ret.stderr && ret.stderr.length > 0)
msg += '\n' + ret.stderr.toString();
err = new Error(msg);
}
@@ -98,7 +98,7 @@ assert.strictEqual(ret, msg + '\n',
const msg = `Command failed: ${process.execPath} ${args.join(' ')}`;
assert(err instanceof Error);
assert.strictEqual(err.message.trim(), msg);
assert.strictEqual(err.message, msg);
assert.strictEqual(err.status, 1);
return true;
});

0 comments on commit 49d1c36

Please sign in to comment.