summaryrefslogtreecommitdiff
path: root/test/parallel/test-repl-recoverable.js
diff options
context:
space:
mode:
authorBlake Embrey <hello@blakeembrey.com>2015-10-22 09:38:40 -0700
committerJeremiah Senkpiel <fishrock123@rocketmail.com>2016-05-12 10:03:06 -0400
commit9552e3b4af48d6864b4ba23939c22f836d933c24 (patch)
treee7d630190d094fdd60dfe705f70af42fe4ab861f /test/parallel/test-repl-recoverable.js
parent25f8d04525c01d74afdc7356cad68e16fd4561e6 (diff)
downloadandroid-node-v8-9552e3b4af48d6864b4ba23939c22f836d933c24.tar.gz
android-node-v8-9552e3b4af48d6864b4ba23939c22f836d933c24.tar.bz2
android-node-v8-9552e3b4af48d6864b4ba23939c22f836d933c24.zip
repl: exports `Recoverable`
Allow REPL consumers to callback with a `Recoverable` error instance and trigger multi-line REPL prompts. Fixes: https://github.com/nodejs/node/issues/2939 PR-URL: https://github.com/nodejs/node/pull/3488 Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
Diffstat (limited to 'test/parallel/test-repl-recoverable.js')
-rw-r--r--test/parallel/test-repl-recoverable.js40
1 files changed, 40 insertions, 0 deletions
diff --git a/test/parallel/test-repl-recoverable.js b/test/parallel/test-repl-recoverable.js
new file mode 100644
index 0000000000..6788d84595
--- /dev/null
+++ b/test/parallel/test-repl-recoverable.js
@@ -0,0 +1,40 @@
+'use strict';
+
+const common = require('../common');
+const assert = require('assert');
+const repl = require('repl');
+
+let evalCount = 0;
+let recovered = false;
+let rendered = false;
+
+function customEval(code, context, file, cb) {
+ evalCount++;
+
+ return cb(evalCount === 1 ? new repl.Recoverable() : null, true);
+}
+
+const putIn = new common.ArrayStream();
+
+putIn.write = function(msg) {
+ if (msg === '... ') {
+ recovered = true;
+ }
+
+ if (msg === 'true\n') {
+ rendered = true;
+ }
+};
+
+repl.start('', putIn, customEval);
+
+// https://github.com/nodejs/node/issues/2939
+// Expose recoverable errors to the consumer.
+putIn.emit('data', '1\n');
+putIn.emit('data', '2\n');
+
+process.on('exit', function() {
+ assert(recovered, 'REPL never recovered');
+ assert(rendered, 'REPL never rendered the result');
+ assert.strictEqual(evalCount, 2);
+});