mirror of
https://github.com/pulsar-edit/pulsar.git
synced 2025-01-09 00:30:14 +03: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:
parent
f76db1f957
commit
7a89de077b
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()
|
||||
|
Loading…
Reference in New Issue
Block a user