diff --git a/lib/jasmine-core/jasmine.js b/lib/jasmine-core/jasmine.js index 6c05f9c1..7ac7ad41 100644 --- a/lib/jasmine-core/jasmine.js +++ b/lib/jasmine-core/jasmine.js @@ -7872,7 +7872,6 @@ getJasmineRequireObj().QueueRunner = function(j$) { completedSynchronously = true, handleError = function handleError(error) { onException(error); - next(error); }, cleanup = once(function cleanup() { if (timeoutId !== void 0) { diff --git a/spec/core/QueueRunnerSpec.js b/spec/core/QueueRunnerSpec.js index 7333b02a..7eea2563 100644 --- a/spec/core/QueueRunnerSpec.js +++ b/spec/core/QueueRunnerSpec.js @@ -669,9 +669,13 @@ describe('QueueRunner', function() { jasmine.clock().uninstall(); }); - it('skips to cleanup functions on the first exception', function() { + it('skips to cleanup functions once the fn completes after an unhandled exception', function() { var errorListeners = [], - queueableFn = { fn: function(done) {} }, + queueableFn = { + fn: function(done) { + queueableFnDone = done; + } + }, nextQueueableFn = { fn: jasmine.createSpy('nextFunction') }, cleanupFn = { fn: jasmine.createSpy('cleanup') }, queueRunner = new jasmineUnderTest.QueueRunner({ @@ -686,10 +690,13 @@ describe('QueueRunner', function() { queueableFns: [queueableFn, nextQueueableFn], cleanupFns: [cleanupFn], completeOnFirstError: true - }); + }), + queueableFnDone; queueRunner.execute(); errorListeners[errorListeners.length - 1](new Error('error')); + expect(cleanupFn.fn).not.toHaveBeenCalled(); + queueableFnDone(); expect(nextQueueableFn.fn).not.toHaveBeenCalled(); expect(cleanupFn.fn).toHaveBeenCalled(); }); diff --git a/src/core/QueueRunner.js b/src/core/QueueRunner.js index be9e7f62..679da4a5 100644 --- a/src/core/QueueRunner.js +++ b/src/core/QueueRunner.js @@ -89,7 +89,6 @@ getJasmineRequireObj().QueueRunner = function(j$) { completedSynchronously = true, handleError = function handleError(error) { onException(error); - next(error); }, cleanup = once(function cleanup() { if (timeoutId !== void 0) {