From 49d1c366d85f4b7e321b1d71eabaae59c20b83c5 Mon Sep 17 00:00:00 2001 From: cjihrig Date: Fri, 28 Oct 2016 14:02:24 -0400 Subject: [PATCH] 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: https://github.com/nodejs/node/pull/9343 Reviewed-By: Wyatt Preul Reviewed-By: James M Snell --- lib/child_process.js | 2 +- test/sequential/test-child-process-execsync.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/child_process.js b/lib/child_process.js index afdc5ae551a95e..a108cba0201cdb 100644 --- a/lib/child_process.js +++ b/lib/child_process.js @@ -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); } diff --git a/test/sequential/test-child-process-execsync.js b/test/sequential/test-child-process-execsync.js index 137ddbda425f2c..e40651dacff0a1 100644 --- a/test/sequential/test-child-process-execsync.js +++ b/test/sequential/test-child-process-execsync.js @@ -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; });