mirror of
https://github.com/atom/atom.git
synced 2026-01-23 05:48:10 -05:00
Log longest specs explicitly
Instead of logging them to the console at the end of the run, add two new methods, logLongestSpec() and logLongestSpecs(number) to the window object that will print out the results.
This commit is contained in:
34
spec/time-reporter.coffee
Normal file
34
spec/time-reporter.coffee
Normal file
@@ -0,0 +1,34 @@
|
||||
_ = require 'underscore'
|
||||
|
||||
module.exports =
|
||||
class TimeReporter extends jasmine.Reporter
|
||||
|
||||
timedSpecs: []
|
||||
|
||||
constructor: ->
|
||||
window.logLongestSpec = -> window.logLongestSpecs(1)
|
||||
window.logLongestSpecs = (number=10) =>
|
||||
console.log "#{number} longest running specs:"
|
||||
for spec in _.sortBy(@timedSpecs, (spec) -> -spec.time)[0...number]
|
||||
console.log "#{spec.time}ms"
|
||||
console.log spec.description
|
||||
|
||||
reportSpecStarting: (spec) ->
|
||||
stack = [spec.description]
|
||||
suite = spec.suite
|
||||
while suite
|
||||
stack.unshift suite.description
|
||||
suite = suite.parentSuite
|
||||
|
||||
@time = new Date().getTime()
|
||||
reducer = (memo, description, index) ->
|
||||
"#{memo}#{_.multiplyString(' ', index)}#{description}\n"
|
||||
@description = _.reduce(stack, reducer, "")
|
||||
|
||||
reportSpecResults: ->
|
||||
return unless @time? and @description?
|
||||
@timedSpecs.push
|
||||
description: @description
|
||||
time: new Date().getTime() - @time
|
||||
@time = null
|
||||
@description = null
|
||||
30
vendor/jasmine-helper.coffee
vendored
30
vendor/jasmine-helper.coffee
vendored
@@ -6,7 +6,7 @@ module.exports.runSpecSuite = (specSuite, logErrors=true) ->
|
||||
nakedLoad 'jasmine-focused'
|
||||
|
||||
$ = require 'jquery'
|
||||
_ = require 'underscore'
|
||||
TimeReporter = require 'time-reporter'
|
||||
|
||||
$('body').append $$ ->
|
||||
@div id: 'jasmine-content'
|
||||
@@ -20,34 +20,6 @@ module.exports.runSpecSuite = (specSuite, logErrors=true) ->
|
||||
jasmineEnv = jasmine.getEnv()
|
||||
jasmineEnv.addReporter(reporter)
|
||||
|
||||
class TimeReporter extends jasmine.Reporter
|
||||
|
||||
timedSpecs: []
|
||||
|
||||
reportSpecStarting: (spec) ->
|
||||
stack = [spec.description]
|
||||
suite = spec.suite
|
||||
while suite
|
||||
stack.unshift suite.description
|
||||
suite = suite.parentSuite
|
||||
|
||||
@time = new Date().getTime()
|
||||
@description = stack.join(' -> ')
|
||||
|
||||
reportSpecResults: ->
|
||||
return unless @time? and @description?
|
||||
@timedSpecs.push
|
||||
description: @description
|
||||
time: new Date().getTime() - @time
|
||||
@time = null
|
||||
@description = null
|
||||
|
||||
reportRunnerResults: ->
|
||||
console.log '10 longest running specs:'
|
||||
for spec in _.sortBy(@timedSpecs, (spec) -> -spec.time)[0...10]
|
||||
console.log "#{spec.time}ms"
|
||||
console.log spec.description
|
||||
|
||||
jasmineEnv.addReporter(new TimeReporter())
|
||||
jasmineEnv.specFilter = (spec) -> reporter.specFilter(spec)
|
||||
jasmineEnv.execute()
|
||||
|
||||
Reference in New Issue
Block a user