diff options
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); +}); |