class Teaspoon::Formatter::Teamcity
Public Class Methods
new(*args)
click to toggle source
Calls superclass method
Teaspoon::Formatter::Base::new
# File lib/teaspoon/formatter/teamcity.rb, line 6 def initialize(*args) log("enteredTheMatrix timestamp='#{Time.now.to_json.gsub('"', '')}'") super end
Protected Instance Methods
log_complete(failure_count)
click to toggle source
# File lib/teaspoon/formatter/teamcity.rb, line 60 def log_complete(failure_count) log_line("\nFinished in #{@result.elapsed} seconds") stats = "#{pluralize('example', run_count)}, #{pluralize('failure', failure_count)}" stats << ", #{pendings.size} pending" if pendings.size > 0 log_line(stats) log_line if failure_count > 0 end
log_coverage(message)
click to toggle source
# File lib/teaspoon/formatter/teamcity.rb, line 45 def log_coverage(message) log("testSuiteStarted name='Coverage summary'") log_line(message) log("testSuiteFinished name='Coverage summary'") end
log_error(result)
click to toggle source
# File lib/teaspoon/formatter/teamcity.rb, line 36 def log_error(result) log("message text='#{escape(result.message)}' errorDetails='#{escape_trace(result.trace)}' status='ERROR'") end
log_failing_spec(result)
click to toggle source
# File lib/teaspoon/formatter/teamcity.rb, line 30 def log_failing_spec(result) log_teamcity_spec(type: "testStarted", desc: escape(result.description)) do log("testFailed name='#{escape(result.description)}' message='#{escape(result.message)}'") end end
log_passing_spec(result)
click to toggle source
# File lib/teaspoon/formatter/teamcity.rb, line 22 def log_passing_spec(result) log_teamcity_spec(type: "testStarted", desc: escape(result.description)) end
log_pending_spec(result)
click to toggle source
# File lib/teaspoon/formatter/teamcity.rb, line 26 def log_pending_spec(result) log_teamcity_spec(type: "testIgnored", desc: escape(result.description)) end
log_result(result)
click to toggle source
# File lib/teaspoon/formatter/teamcity.rb, line 40 def log_result(result) log_end_suite @result = result end
log_runner(result)
click to toggle source
# File lib/teaspoon/formatter/teamcity.rb, line 13 def log_runner(result) log("testCount count='#{result.total}' timestamp='#{result.start}'") end
log_suite(result)
click to toggle source
# File lib/teaspoon/formatter/teamcity.rb, line 17 def log_suite(result) log_end_suite log("testSuiteStarted name='#{result.label}'") end
log_threshold_failure(message)
click to toggle source
# File lib/teaspoon/formatter/teamcity.rb, line 51 def log_threshold_failure(message) log("testSuiteStarted name='Coverage thresholds'") log_teamcity_spec(type: "testStarted", desc: "Coverage thresholds") do log("testFailed name='Coverage thresholds' message='were not met'") log_line(message) end log("testSuiteFinished name='Coverage thresholds'") end
Private Instance Methods
escape(str)
click to toggle source
# File lib/teaspoon/formatter/teamcity.rb, line 85 def escape(str) str = str.gsub(/[|'\[\]]/) { |c| "|#{c}" } str.gsub("\n", "|n").gsub("\r", "|r") end
escape_trace(trace)
click to toggle source
# File lib/teaspoon/formatter/teamcity.rb, line 90 def escape_trace(trace) lines = trace.map { |t| ["#{t['file']}:#{t['line']}", t["function"]].compact.join(" ") } escape(lines.join("\n")) end
log(str)
click to toggle source
# File lib/teaspoon/formatter/teamcity.rb, line 81 def log(str) log_line("##teamcity[#{str}]") end
log_end_suite()
click to toggle source
# File lib/teaspoon/formatter/teamcity.rb, line 70 def log_end_suite log("testSuiteFinished name='#{escape(@last_suite.label)}'") if @last_suite end
log_teamcity_spec(opts) { || ... }
click to toggle source
# File lib/teaspoon/formatter/teamcity.rb, line 74 def log_teamcity_spec(opts, &_block) log("#{opts[:type]} name='#{opts[:desc]}' captureStandardOutput='true'") log_line(@stdout.gsub(/\n$/, "")) unless @stdout.blank? yield if block_given? log("testFinished name='#{opts[:desc]}'") end