| var Parser = require('../lib/parser/hiredis').Parser; |
| var assert = require('assert'); |
| |
| /* |
| This test makes sure that exceptions thrown inside of "reply" event handlers |
| are not trapped and mistakenly emitted as parse errors. |
| */ |
| (function testExecuteDoesNotCatchReplyCallbackExceptions() { |
| var parser = new Parser(); |
| var replies = [{}]; |
| |
| parser.reader = { |
| feed: function() {}, |
| get: function() { |
| return replies.shift(); |
| } |
| }; |
| |
| var emittedError = false; |
| var caughtException = false; |
| |
| parser |
| .on('error', function() { |
| emittedError = true; |
| }) |
| .on('reply', function() { |
| throw new Error('bad'); |
| }); |
| |
| try { |
| parser.execute(); |
| } catch (err) { |
| caughtException = true; |
| } |
| |
| assert.equal(caughtException, true); |
| assert.equal(emittedError, false); |
| })(); |