Skip to content

Commit

Permalink
test: increase coverage for exec() functions
Browse files Browse the repository at this point in the history
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: #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>
  • Loading branch information
cjihrig authored and targos committed Jan 28, 2017
1 parent 543aa07 commit 38e52cd
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 24 deletions.
24 changes: 0 additions & 24 deletions test/parallel/test-child-process-exec-buffer.js

This file was deleted.

49 changes: 49 additions & 0 deletions test/parallel/test-child-process-exec-encoding.js
Original file line number Diff line number Diff line change
@@ -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);
});
});
}

0 comments on commit 38e52cd

Please sign in to comment.