child-process-close
Version:
Make child_process objects emit 'close' events in node v0.6 like they do in v0.8. This makes it easier to write code that works correctly on both version of node.
51 lines (40 loc) • 912 B
JavaScript
require('../index');
var assert = require('assert'),
exec = require('child_process').exec;
var cp = exec('echo hello', function(err) {
assert(!err);
});
var stdoutData = '',
stdoutEnd = false,
gotExit = false,
gotClose = false;
cp.stdout.setEncoding('ascii');
cp.stdout.on('data', function(data) {
assert(!stdoutEnd);
stdoutData += data;
});
cp.stdout.on('end', function() {
assert(!stdoutEnd);
assert(/^hello/.test(stdoutData));
stdoutEnd = true;
});
cp.on('exit', function(code, signal) {
assert.strictEqual(code, 0);
assert(!signal);
assert(!gotExit);
assert(!gotClose);
gotExit = true;
});
cp.on('close', function(code, signal) {
assert.strictEqual(code, 0);
assert(!signal);
assert(gotExit);
assert(stdoutEnd);
assert(!gotClose);
gotClose = true;
});
process.on('exit', function() {
assert(stdoutEnd);
assert(gotExit);
assert(gotClose);
});