jasmine-headless-webkit/vendor/assets/coffeescripts/jasmine.HeadlessConsoleReporter.coffee
2011-12-12 12:22:32 -05:00

91 lines
2.3 KiB
CoffeeScript

#= require jasmine.HeadlessReporter.js
#
class jasmine.HeadlessConsoleReporter extends jasmine.HeadlessReporter
constructor: (@callback = null) ->
super(@callback)
@position = 0
@positions = "|/-\\"
reportRunnerResults: (runner) ->
super()
JHW.stdout.print("\n")
resultLine = this.formatResultLine(this._runtime())
if @failedCount == 0
JHW.stdout.puts("PASS: #{resultLine}".foreground('green'))
else
JHW.stdout.puts("FAIL: #{resultLine}".foreground('red'))
for result in @results
JHW.stdout.puts(result.toString())
if window.JHW
window.onbeforeunload = null
reportRunnerStarting: (runner) ->
super(runner)
JHW.stdout.puts("\nRunning Jasmine specs...".bright()) if !this.hasError()
reportSpecResults: (spec) ->
super(spec)
this._reportSpecResult(spec, {
success: (results) =>
JHW.stdout.print('.'.foreground('green'))
failure: (results) =>
JHW.stdout.print('F'.foreground('red'))
failureResult = new HeadlessReporterResult(spec.getFullName(), spec.getSpecSplitName())
testCount = 1
for result in results.getItems()
if result.type == 'expect' and !result.passed_
if foundLine = result.expectations[testCount - 1]
[ result.line, result.lineNumber ] = foundLine
failureResult.addResult(result)
testCount += 1
@results.push(failureResult)
})
reportSpecWaiting: ->
if !@timer
@timer = true
@first = true
this._waitRunner()
reportSpecRunning: ->
if @timer
clearTimeout(@timer)
@timer = null
JHW.stdout.print(Intense.moveBack())
formatResultLine: (runtime) ->
line = []
line.push(@length)
line.push((if @length == 1 then "test" else "tests") + ',')
line.push(@failedCount)
line.push((if @failedCount == 1 then "failure" else "failures") + ',')
line.push(runtime)
line.push((if runtime == 1.0 then "sec" else "secs") + '.')
line.join(' ')
_waitRunner: =>
@timer = setTimeout(
=>
if @timer
JHW.stdout.print(Intense.moveBack()) if !@first
JHW.stdout.print(@positions.substr(@position, 1).foreground('yellow'))
@position += 1
@position %= @positions.length
@first = false
this._waitRunner()
, 750
)