Skip to content

Commit

Permalink
feat(reporter): add check coverage thresholds
Browse files Browse the repository at this point in the history
Add check option to coverageReporter options. Supports similar
options to istanbul's check-coverage feature.

It will cause karma to return a non-zero exit code if coverage
thresholds are not met.

Closes karma-runner#21
  • Loading branch information
nmalaguti committed Apr 16, 2015
1 parent 7684c78 commit 88f48f2
Showing 1 changed file with 60 additions and 3 deletions.
63 changes: 60 additions & 3 deletions test/reporter.spec.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -61,13 +61,10 @@ describe 'reporter', ->
Store: mockStore
Collector: mockCollector
Report: create: mockReportCreate
<<<<<<< HEAD
utils:
summarizeCoverage: mockSummarizeCoverage
summarizeFileCoverage: mockSummarizeCoverage
=======
config: defaultConfig: sinon.stub().returns(reporting: watermarks: mockDefaultWatermarks)
>>>>>>> Added tests for watermarks
dateformat: require 'dateformat'
'./coverageMap': mockCoverageMap

Expand Down Expand Up @@ -428,3 +425,63 @@ describe 'reporter', ->
expect(options.args[1].watermarks.branches).to.deep.equal(mockDefaultWatermarks.branches)
expect(options.args[1].watermarks.functions).to.deep.equal(mockDefaultWatermarks.functions)
expect(options.args[1].watermarks.lines).to.deep.equal(watermarks.lines)

it 'should log errors on low coverage and fail the build', ->
customConfig = _.merge {}, rootConfig,
coverageReporter:
check:
each:
statements: 50

mockGetFinalCoverage.returns
'./foo/bar.js': {}
'./foo/baz.js': {}

spy1 = sinon.spy()

customLogger = create: (name) ->
debug: -> null
info: -> null
warn: -> null
error: spy1

results = exitCode: 0

reporter = new m.CoverageReporter customConfig, mockHelper, customLogger
reporter.onRunStart()
browsers.forEach (b) -> reporter.onBrowserStart b
reporter.onRunComplete browsers, results

expect(spy1).to.have.been.called

expect(results.exitCode).to.not.equal 0

it 'should not log errors on sufficient coverage and not fail the build', ->
customConfig = _.merge {}, rootConfig,
coverageReporter:
check:
each:
statements: 10

mockGetFinalCoverage.returns
'./foo/bar.js': {}
'./foo/baz.js': {}

spy1 = sinon.spy()

customLogger = create: (name) ->
debug: -> null
info: -> null
warn: -> null
error: spy1

results = exitCode: 0

reporter = new m.CoverageReporter customConfig, mockHelper, customLogger
reporter.onRunStart()
browsers.forEach (b) -> reporter.onBrowserStart b
reporter.onRunComplete browsers, results

expect(spy1).to.not.have.been.called

expect(results.exitCode).to.equal 0

0 comments on commit 88f48f2

Please sign in to comment.