diff options
-rw-r--r-- | lib/_debugger.js | 10 | ||||
-rw-r--r-- | test/simple/test-debugger-repl.js | 28 |
2 files changed, 33 insertions, 5 deletions
diff --git a/lib/_debugger.js b/lib/_debugger.js index b221ce0bb9..d719631358 100644 --- a/lib/_debugger.js +++ b/lib/_debugger.js @@ -759,6 +759,15 @@ function Interface(stdin, stdout, args) { }; if (parseInt(process.env['NODE_NO_READLINE'], 10)) { opts.terminal = false; + } else if (parseInt(process.env['NODE_FORCE_READLINE'], 10)) { + opts.terminal = true; + + // Emulate Ctrl+C if we're emulating terminal + if (!this.stdout.isTTY) { + process.on('SIGINT', function() { + self.repl.rli.emit('SIGINT'); + }); + } } if (parseInt(process.env['NODE_DISABLE_COLORS'], 10)) { opts.useColors = false; @@ -777,7 +786,6 @@ function Interface(stdin, stdout, args) { self.killChild(); }); - var proto = Interface.prototype, ignored = ['pause', 'resume', 'exitRepl', 'handleBreak', 'requireConnection', 'killChild', 'trySpawn', diff --git a/test/simple/test-debugger-repl.js b/test/simple/test-debugger-repl.js index 14092bc4a2..4d8d2b1d70 100644 --- a/test/simple/test-debugger-repl.js +++ b/test/simple/test-debugger-repl.js @@ -29,7 +29,9 @@ var port = common.PORT + 1337; var script = common.fixturesDir + '/breakpoints.js'; -var child = spawn(process.execPath, ['debug', '--port=' + port, script]); +var child = spawn(process.execPath, ['debug', '--port=' + port, script], { + env: { NODE_FORCE_READLINE: 1 } +}); console.error('./node', 'debug', '--port=' + port, script); @@ -48,6 +50,7 @@ var expected = []; child.on('line', function(line) { line = line.replace(/^(debug> )+/, 'debug> '); + line = line.replace(/\u001b\[\d+\w/g, ''); console.error('line> ' + line); assert.ok(expected.length > 0, 'Got unexpected line: ' + line); @@ -96,15 +99,17 @@ addTest(null, [ // Next addTest('n', [ + /debug> n/, /break in .*:11/, /9/, /10/, /11/, /12/, /13/ ]); // Watch -addTest('watch("\'x\'"), true', [/true/]); +addTest('watch("\'x\'"), true', [/debug>/, /true/]); // Continue addTest('c', [ + /debug>/, /break in .*:5/, /Watchers/, /0:\s+'x' = "x"/, @@ -114,49 +119,64 @@ addTest('c', [ // Show watchers addTest('watchers', [ + /debug>/, /0:\s+'x' = "x"/ ]); // Unwatch -addTest('unwatch("\'x\'"), true', [/true/]); +addTest('unwatch("\'x\'"), true', [/debug>/, /true/]); // Step out addTest('o', [ + /debug>/, /break in .*:12/, /10/, /11/, /12/, /13/, /14/ ]); // Continue addTest('c', [ + /debug>/, /break in .*:5/, /3/, /4/, /5/, /6/, /7/ ]); // Set breakpoint by function name addTest('sb("setInterval()", "!(setInterval.flag++)")', [ + /debug>/, /1/, /2/, /3/, /4/, /5/, /6/, /7/, /8/, /9/, /10/ ]); // Continue addTest('c', [ + /debug>/, /break in node.js:\d+/, /\d/, /\d/, /\d/, /\d/, /\d/ ]); -addTest('c', [ +// Repeat last command +addTest('', [ + /debug>/, /break in .*breakpoints.js:\d+/, /\d/, /\d/, /\d/, /\d/, /\d/ ]); addTest('repl', [ + /debug>/, /Press Ctrl \+ C to leave debug repl/ ]); addTest('now', [ + /> now/, /\w* \w* \d* \d* \d*:\d*:\d* GMT[+-]\d* (\w*)/ ]); function finish() { + // Exit debugger repl + child.kill('SIGINT'); + child.kill('SIGINT'); + + // Exit debugger + child.kill('SIGINT'); process.exit(0); } |