Skip to content

Commit

Permalink
feat: Propagate errors thrown in afterAll blocks
Browse files Browse the repository at this point in the history
If an error is thrown in an afterAll block, it needs to be handled
specially since the error isn't attached to a specific spec.  This
change won't fail any specific test, but will cause a general failure
which will still cause overall run failure.

Closes karma-runner#161
  • Loading branch information
TheModMaker committed Mar 28, 2017
1 parent fe23ac7 commit e5fc540
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 0 deletions.
24 changes: 24 additions & 0 deletions src/adapter.js
Expand Up @@ -191,6 +191,18 @@ function KarmaReporter (tc, jasmineEnv) {

this.jasmineDone = function (result) {
result = result || {}

// Any errors in top-level afterAll blocks are given here.
if (result.failedExpectations && result.failedExpectations.length) {
var message = 'An error was thrown in afterAll'
var steps = result.failedExpectations
for (var i = 0, l = steps.length; i < l; i++) {
message += '\n' + formatFailedStep(steps[i])
}

tc.error(message)
}

tc.complete({
order: result.order,
coverage: window.__coverage__
Expand All @@ -210,6 +222,18 @@ function KarmaReporter (tc, jasmineEnv) {
return
}

// Any errors in afterAll blocks are given here, except for top-level
// afterAll blocks.
if (result.failedExpectations && result.failedExpectations.length) {
var message = 'An error was thrown in afterAll'
var steps = result.failedExpectations
for (var i = 0, l = steps.length; i < l; i++) {
message += '\n' + formatFailedStep(steps[i])
}

tc.error(message)
}

currentSuite = currentSuite.parent
}

Expand Down
17 changes: 17 additions & 0 deletions test/adapter.spec.js
Expand Up @@ -145,6 +145,23 @@ describe('jasmine adapter', function () {
expect(karma.result).toHaveBeenCalled()
})

it('should report errors in afterAll blocks', function () {
spyOn(karma, 'complete')
spyOn(karma, 'error')

var result = {
failedExpectations: []
}

reporter.jasmineDone(result)
expect(karma.error).not.toHaveBeenCalled()

result.failedExpectations.push({})

reporter.jasmineDone(result)
expect(karma.error).toHaveBeenCalled()
})

it('should report executedExpectCount as sum of passed and failed expectations', function () {
karma.result.and.callFake(function (result) {
expect(result.executedExpectationsCount).toBe(2)
Expand Down

0 comments on commit e5fc540

Please sign in to comment.