diff options
author | Ruben Bridgewater <ruben@bridgewater.de> | 2018-02-11 19:17:03 +0100 |
---|---|---|
committer | Ruben Bridgewater <ruben@bridgewater.de> | 2018-02-12 15:42:06 +0100 |
commit | 1fc373bdf6758dcf045db21e4a075e4099ca7c19 (patch) | |
tree | 6845172f59c4bdf9be6d37efadc502e867adb248 /lib | |
parent | 60c9ad797994e544af21ce991dce2c3360ae1801 (diff) | |
download | android-node-v8-1fc373bdf6758dcf045db21e4a075e4099ca7c19.tar.gz android-node-v8-1fc373bdf6758dcf045db21e4a075e4099ca7c19.tar.bz2 android-node-v8-1fc373bdf6758dcf045db21e4a075e4099ca7c19.zip |
Revert "repl: refactor tests to not rely on timing"
This reverts commit de848ac1e0483327a2ce8716c3f8567eaeacb660.
The commit broke multiline repl.
PR-URL: https://github.com/nodejs/node/pull/18715
Refs: https://github.com/nodejs/node/pull/17828
Reviewed-By: Tiancheng "Timothy" Gu <timothygu99@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/internal/repl.js | 4 | ||||
-rw-r--r-- | lib/repl.js | 79 |
2 files changed, 41 insertions, 42 deletions
diff --git a/lib/internal/repl.js b/lib/internal/repl.js index a852f87bc8..adbb80b0af 100644 --- a/lib/internal/repl.js +++ b/lib/internal/repl.js @@ -8,7 +8,7 @@ const os = require('os'); const util = require('util'); const debug = util.debuglog('repl'); module.exports = Object.create(REPL); -module.exports.createInternalRepl = createInternalRepl; +module.exports.createInternalRepl = createRepl; // XXX(chrisdickinson): The 15ms debounce value is somewhat arbitrary. // The debounce is to guard against code pasted into the REPL. @@ -19,7 +19,7 @@ function _writeToOutput(repl, message) { repl._refreshLine(); } -function createInternalRepl(env, opts, cb) { +function createRepl(env, opts, cb) { if (typeof opts === 'function') { cb = opts; opts = null; diff --git a/lib/repl.js b/lib/repl.js index 2227953fa8..84682b1b63 100644 --- a/lib/repl.js +++ b/lib/repl.js @@ -109,11 +109,6 @@ writer.options = Object.assign({}, exports._builtinLibs = internalModule.builtinLibs; -const sep = '\u0000\u0000\u0000'; -const regExMatcher = new RegExp(`^${sep}(.*)${sep}(.*)${sep}(.*)${sep}(.*)` + - `${sep}(.*)${sep}(.*)${sep}(.*)${sep}(.*)` + - `${sep}(.*)$`); - function REPLServer(prompt, stream, eval_, @@ -154,7 +149,6 @@ function REPLServer(prompt, } var self = this; - replMap.set(self, self); self._domain = dom || domain.create(); self.useGlobal = !!useGlobal; @@ -171,6 +165,41 @@ function REPLServer(prompt, self.rli = this; const savedRegExMatches = ['', '', '', '', '', '', '', '', '', '']; + const sep = '\u0000\u0000\u0000'; + const regExMatcher = new RegExp(`^${sep}(.*)${sep}(.*)${sep}(.*)${sep}(.*)` + + `${sep}(.*)${sep}(.*)${sep}(.*)${sep}(.*)` + + `${sep}(.*)$`); + + eval_ = eval_ || defaultEval; + + // Pause taking in new input, and store the keys in a buffer. + const pausedBuffer = []; + let paused = false; + function pause() { + paused = true; + } + function unpause() { + if (!paused) return; + paused = false; + let entry; + while (entry = pausedBuffer.shift()) { + const [type, payload] = entry; + switch (type) { + case 'key': { + const [d, key] = payload; + self._ttyWrite(d, key); + break; + } + case 'close': + self.emit('exit'); + break; + } + if (paused) { + break; + } + } + } + function defaultEval(code, context, file, cb) { var err, result, script, wrappedErr; var wrappedCmd = false; @@ -302,6 +331,7 @@ function REPLServer(prompt, if (awaitPromise && !err) { let sigintListener; + pause(); let promise = result; if (self.breakEvalOnSigint) { const interrupt = new Promise((resolve, reject) => { @@ -320,6 +350,7 @@ function REPLServer(prompt, prioritizedSigintQueue.delete(sigintListener); finishExecution(undefined, result); + unpause(); }, (err) => { // Remove prioritized SIGINT listener if it was not called. prioritizedSigintQueue.delete(sigintListener); @@ -329,6 +360,7 @@ function REPLServer(prompt, Object.defineProperty(err, 'stack', { value: '' }); } + unpause(); if (err && process.domain) { debug('not recoverable, send to domain'); process.domain.emit('error', err); @@ -345,36 +377,6 @@ function REPLServer(prompt, } } - eval_ = eval_ || defaultEval; - - // Pause taking in new input, and store the keys in a buffer. - const pausedBuffer = []; - let paused = false; - function pause() { - paused = true; - } - function unpause() { - if (!paused) return; - paused = false; - let entry; - while (entry = pausedBuffer.shift()) { - const [type, payload] = entry; - switch (type) { - case 'key': { - const [d, key] = payload; - self._ttyWrite(d, key); - break; - } - case 'close': - self.emit('exit'); - break; - } - if (paused) { - break; - } - } - } - self.eval = self._domain.bind(eval_); self._domain.on('error', function debugDomainError(e) { @@ -403,7 +405,6 @@ function REPLServer(prompt, top.clearBufferedCommand(); top.lines.level = []; top.displayPrompt(); - unpause(); }); if (!input && !output) { @@ -592,7 +593,6 @@ function REPLServer(prompt, const evalCmd = self[kBufferedCommandSymbol] + cmd + '\n'; debug('eval %j', evalCmd); - pause(); self.eval(evalCmd, self.context, 'repl', finish); function finish(e, ret) { @@ -605,7 +605,6 @@ function REPLServer(prompt, '(Press Control-D to exit.)\n'); self.clearBufferedCommand(); self.displayPrompt(); - unpause(); return; } @@ -643,7 +642,6 @@ function REPLServer(prompt, // Display prompt again self.displayPrompt(); - unpause(); } }); @@ -726,6 +724,7 @@ exports.start = function(prompt, ignoreUndefined, replMode); if (!exports.repl) exports.repl = repl; + replMap.set(repl, repl); return repl; }; |