Compare commits

...

1 Commits

Author SHA1 Message Date
Alexis Campailla
6e33718c36 debug: connect after child is ready
We now wait to connect to the debuggee until we know that its error
stream has data, to ensure that the output message "connecting..... ok"
appears after "Debugger listening on port xyz"

I also increased the test timeout to let the more complex tests finish
in time on Windows

This change fixes the following unit tests on Windows:
 test-debugger-repl.js
 test-debugger-repl-term.js
 test-debugger-repl-utf8.js
 test-debugger-repl-restart.js
2013-12-06 13:54:32 -08:00
2 changed files with 12 additions and 10 deletions

View File

@@ -25,6 +25,7 @@ var util = require('util'),
vm = require('vm'),
repl = require('repl'),
inherits = util.inherits,
assert = require('assert'),
spawn = require('child_process').spawn;
exports.start = function(argv, stdin, stdout) {
@@ -1612,6 +1613,7 @@ Interface.prototype.trySpawn = function(cb) {
childArgs = this.args;
this.killChild();
assert(!this.child);
if (this.args.length === 2) {
var match = this.args[1].match(/^([^:]+):(\d+)$/);
@@ -1647,12 +1649,10 @@ Interface.prototype.trySpawn = function(cb) {
}
}
if (!this.child) {
this.child = spawn(process.execPath, childArgs);
this.child = spawn(process.execPath, childArgs);
this.child.stdout.on('data', this.childPrint.bind(this));
this.child.stderr.on('data', this.childPrint.bind(this));
}
this.child.stdout.on('data', this.childPrint.bind(this));
this.child.stderr.on('data', this.childPrint.bind(this));
this.pause();
@@ -1709,8 +1709,10 @@ Interface.prototype.trySpawn = function(cb) {
client.connect(port, host);
}
setTimeout(function() {
self.print('connecting to port ' + port + '..', true);
attemptConnect();
}, 50);
this.child.stderr.once('data', function() {
setImmediate(function() {
self.print('connecting to port ' + port + '..', true);
attemptConnect();
});
});
};

View File

@@ -91,7 +91,7 @@ function startDebugger(scriptToDebug) {
});
quit();
}, 5000).unref();
}, 10000).unref();
process.once('uncaughtException', function(e) {
console.error('UncaughtException', e, e.stack);