diff options
author | Alexis Campailla <alexis@janeasystems.com> | 2013-12-06 08:58:15 -0800 |
---|---|---|
committer | Trevor Norris <trev.norris@gmail.com> | 2013-12-06 13:54:32 -0800 |
commit | 6e33718c36b826698205677e8563bd50d2f884ac (patch) | |
tree | be9c9451cce1c2218582f7314d51fe742bae1f22 | |
parent | 1903240f2a5a3fbf723e7736c5dd14f906de98fb (diff) | |
download | node-pr6651.tar.gz |
debug: connect after child is readypr6651
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
-rw-r--r-- | lib/_debugger.js | 20 | ||||
-rw-r--r-- | test/simple/helper-debugger-repl.js | 2 |
2 files changed, 12 insertions, 10 deletions
diff --git a/lib/_debugger.js b/lib/_debugger.js index 4dd9f5363..f9e24768f 100644 --- a/lib/_debugger.js +++ b/lib/_debugger.js @@ -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(); + }); + }); }; diff --git a/test/simple/helper-debugger-repl.js b/test/simple/helper-debugger-repl.js index 409e4f54d..6346457af 100644 --- a/test/simple/helper-debugger-repl.js +++ b/test/simple/helper-debugger-repl.js @@ -91,7 +91,7 @@ function startDebugger(scriptToDebug) { }); quit(); - }, 5000).unref(); + }, 10000).unref(); process.once('uncaughtException', function(e) { console.error('UncaughtException', e, e.stack); |