frankendoc
Version:
bringing documents alive
48 lines (34 loc) • 1.22 kB
text/coffeescript
{ Stats } = require './stats'
{ Suites } = require './suites'
_ = require 'underscore'
class @Report
start: ->
@stats = new Stats
@suites = new Suites this
suite: (it) -> @suites.report it
start_suite: (suite) ->
@report "SuiteStarted name='#{suite.name}'"
stop_suite: (suite) ->
@report "SuiteFinished name='#{suite.name}' duration='#{suite.duration}'"
running: (name) ->
@name = @escape name
@stats.start()
@report "Started name='#{@name}'"
finished: (@results) -> @[@stats.stop @results]()
passed: -> @report "Finished name='#{@name}' duration='#{@stats.duration}'"
failed: -> @report "Failed name='#{@name}' message='#{@message()}'"
pending: -> @report "Ignored name='#{@name}' message='#{@message()}'"
message: -> @escape @stats.messages().join '\n'
stop: ->
report: (message) ->
console.log '##teamcity[test' + message + ']'
escape: (s) -> s
.replace(/\|/g, "||")
.replace(/\n/g, "|n")
.replace(/\r/g, "|r")
.replace(/\[/g, "|[")
.replace(/\]/g, "|]")
.replace(/\u0085/g, "|x")
.replace(/\u2028/g, "|l")
.replace(/\u2029/g, "|p")
.replace(/'/g, "|'")