test: capture stderr from child processes

If the test fails with errors from the child commands,
there is no debug info. Suppliment the stderr data
so that we know what to look for.

Refs: https://github.com/nodejs/node/issues/25988
PR-URL: https://github.com/nodejs/node/pull/26007
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
This commit is contained in:
Gireesh Punathil 2019-02-08 07:52:02 -05:00
parent 1847696f4b
commit 448b0c0afc

View File

@ -33,19 +33,17 @@ const MB = KB * KB;
grep = spawn('grep', ['x'], { stdio: [cat.stdout, 'pipe', 'pipe'] }); grep = spawn('grep', ['x'], { stdio: [cat.stdout, 'pipe', 'pipe'] });
wc = spawn('wc', ['-c'], { stdio: [grep.stdout, 'pipe', 'pipe'] }); wc = spawn('wc', ['-c'], { stdio: [grep.stdout, 'pipe', 'pipe'] });
[cat, grep, wc].forEach((child, index) => {
child.stderr.on('data', (d) => {
// Don't want to assert here, as we might miss error code info.
console.error(`got unexpected data from child #${index}:\n${d}`);
});
child.on('exit', common.mustCall(function(code) {
assert.strictEqual(code, 0);
}));
});
wc.stdout.on('data', common.mustCall(function(data) { wc.stdout.on('data', common.mustCall(function(data) {
assert.strictEqual(data.toString().trim(), MB.toString()); assert.strictEqual(data.toString().trim(), MB.toString());
})); }));
cat.on('exit', common.mustCall(function(code) {
assert.strictEqual(code, 0);
}));
grep.on('exit', common.mustCall(function(code) {
assert.strictEqual(code, 0);
}));
wc.on('exit', common.mustCall(function(code) {
assert.strictEqual(code, 0);
}));
} }