diff options
author | cjihrig <cjihrig@gmail.com> | 2017-01-20 13:18:19 -0500 |
---|---|---|
committer | cjihrig <cjihrig@gmail.com> | 2017-01-25 09:33:56 -0500 |
commit | 58cb9cde91f9b6851e98e590a54db5d8980674f7 (patch) | |
tree | e24d25d7481021fd1e0ec62f2f9bafff79a1a9f4 | |
parent | aa4fe92392f3a6d61c82673e13e6fc4a60be3010 (diff) | |
download | node-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.js | 24 | ||||
-rw-r--r-- | test/parallel/test-child-process-exec-encoding.js | 49 |
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); + }); + }); +} |