summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcjihrig <cjihrig@gmail.com>2017-01-20 13:18:19 -0500
committercjihrig <cjihrig@gmail.com>2017-01-25 09:33:56 -0500
commit58cb9cde91f9b6851e98e590a54db5d8980674f7 (patch)
treee24d25d7481021fd1e0ec62f2f9bafff79a1a9f4
parentaa4fe92392f3a6d61c82673e13e6fc4a60be3010 (diff)
downloadnode-new-58cb9cde91f9b6851e98e590a54db5d8980674f7.tar.gz
test: increase coverage for exec() functions
This commit increases code coverage related to the stdout and stderr outputs of the child_process exec() functions. Previously, stdout was completely covered, but stderr was not. PR-URL: https://github.com/nodejs/node/pull/10919 Reviewed-By: Sam Roberts <vieuxtech@gmail.com> Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
-rw-r--r--test/parallel/test-child-process-exec-buffer.js24
-rw-r--r--test/parallel/test-child-process-exec-encoding.js49
2 files changed, 49 insertions, 24 deletions
diff --git a/test/parallel/test-child-process-exec-buffer.js b/test/parallel/test-child-process-exec-buffer.js
deleted file mode 100644
index 092304879e..0000000000
--- a/test/parallel/test-child-process-exec-buffer.js
+++ /dev/null
@@ -1,24 +0,0 @@
-'use strict';
-const common = require('../common');
-const assert = require('assert');
-const exec = require('child_process').exec;
-const os = require('os');
-const str = 'hello';
-
-// default encoding
-exec('echo ' + str, common.mustCall(function(err, stdout, stderr) {
- assert.strictEqual(typeof stdout, 'string', 'Expected stdout to be a string');
- assert.strictEqual(typeof stderr, 'string', 'Expected stderr to be a string');
- assert.strictEqual(str + os.EOL, stdout);
-}));
-
-// no encoding (Buffers expected)
-exec('echo ' + str, {
- encoding: null
-}, common.mustCall(function(err, stdout, stderr) {
- assert.strictEqual(stdout instanceof Buffer, true,
- 'Expected stdout to be a Buffer');
- assert.strictEqual(stderr instanceof Buffer, true,
- 'Expected stderr to be a Buffer');
- assert.strictEqual(str + os.EOL, stdout.toString());
-}));
diff --git a/test/parallel/test-child-process-exec-encoding.js b/test/parallel/test-child-process-exec-encoding.js
new file mode 100644
index 0000000000..ba80ccda8c
--- /dev/null
+++ b/test/parallel/test-child-process-exec-encoding.js
@@ -0,0 +1,49 @@
+'use strict';
+const common = require('../common');
+const assert = require('assert');
+const cp = require('child_process');
+const stdoutData = 'foo';
+const stderrData = 'bar';
+const expectedStdout = `${stdoutData}\n`;
+const expectedStderr = `${stderrData}\n`;
+
+if (process.argv[2] === 'child') {
+ // The following console calls are part of the test.
+ console.log(stdoutData);
+ console.error(stderrData);
+} else {
+ function run(options, callback) {
+ const cmd = `${process.execPath} ${__filename} child`;
+
+ cp.exec(cmd, options, common.mustCall((err, stdout, stderr) => {
+ assert.ifError(err);
+ callback(stdout, stderr);
+ }));
+ }
+
+ // Test default encoding, which should be utf8.
+ run({}, (stdout, stderr) => {
+ assert.strictEqual(typeof stdout, 'string');
+ assert.strictEqual(typeof stderr, 'string');
+ assert.strictEqual(stdout, expectedStdout);
+ assert.strictEqual(stderr, expectedStderr);
+ });
+
+ // Test explicit utf8 encoding.
+ run({ encoding: 'utf8' }, (stdout, stderr) => {
+ assert.strictEqual(typeof stdout, 'string');
+ assert.strictEqual(typeof stderr, 'string');
+ assert.strictEqual(stdout, expectedStdout);
+ assert.strictEqual(stderr, expectedStderr);
+ });
+
+ // Test cases that result in buffer encodings.
+ [undefined, null, 'buffer', 'invalid'].forEach((encoding) => {
+ run({ encoding }, (stdout, stderr) => {
+ assert(stdout instanceof Buffer);
+ assert(stdout instanceof Buffer);
+ assert.strictEqual(stdout.toString(), expectedStdout);
+ assert.strictEqual(stderr.toString(), expectedStderr);
+ });
+ });
+}