var exited = false;
var timeoutId;
+ var err;
+
function exithandler(code, signal) {
if (exited) return;
exited = true;
if (!callback) return;
- if (code === 0 && signal === null) {
+ if (err) {
+ callback(err, stdout, stderr);
+ } else if (code === 0 && signal === null) {
callback(null, stdout, stderr);
} else {
var e = new Error('Command failed: ' + stderr);
child.stdout.addListener('data', function(chunk) {
stdout += chunk;
if (stdout.length > options.maxBuffer) {
+ err = new Error('maxBuffer exceeded.');
kill();
}
});
child.stderr.addListener('data', function(chunk) {
stderr += chunk;
if (stderr.length > options.maxBuffer) {
+ err = new Error('maxBuffer exceeded.');
kill();
}
});
--- /dev/null
+var common = require('../common');
+var exec = require('child_process').exec;
+var assert = require('assert');
+
+var cmd = 'echo "hello world"';
+
+exec(cmd, { maxBuffer: 5 }, function(err, stdout, stderr) {
+ assert.ok(err);
+ assert.ok(/maxBuffer/.test(err.message));
+});