diff options
author | Blake Embrey <hello@blakeembrey.com> | 2015-10-22 09:38:40 -0700 |
---|---|---|
committer | Jeremiah Senkpiel <fishrock123@rocketmail.com> | 2016-05-12 10:03:06 -0400 |
commit | 9552e3b4af48d6864b4ba23939c22f836d933c24 (patch) | |
tree | e7d630190d094fdd60dfe705f70af42fe4ab861f /test/parallel/test-repl-recoverable.js | |
parent | 25f8d04525c01d74afdc7356cad68e16fd4561e6 (diff) | |
download | node-new-9552e3b4af48d6864b4ba23939c22f836d933c24.tar.gz |
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.js | 40 |
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); +}); |