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 afdc5ae551a..a108cba0201 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 137ddbda425..e40651dacff 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; });