class Teaspoon::Formatter::Junit

Protected Instance Methods

log_complete(_failure_count) click to toggle source
# File lib/teaspoon/formatter/junit.rb, line 54
def log_complete(_failure_count)
  log_line(%{</testsuite>\n</testsuites>})
end
log_coverage(message) click to toggle source
# File lib/teaspoon/formatter/junit.rb, line 41
def log_coverage(message)
  properties = "<properties>#{cdata(message)}</properties>"
  log_line(%{<testsuite name="Coverage summary" tests="0">\n#{properties}\n</testsuite>})
end
log_failing_spec(result) click to toggle source
# File lib/teaspoon/formatter/junit.rb, line 31
def log_failing_spec(result)
  log_junit_spec(suite: result.suite, label: result.label) do
    log_line(%{  <failure type="AssertionFailed">#{cdata(result.message)}</failure>})
  end
end
log_passing_spec(result) click to toggle source
# File lib/teaspoon/formatter/junit.rb, line 21
def log_passing_spec(result)
  log_junit_spec(suite: result.suite, label: result.label)
end
log_pending_spec(result) click to toggle source
# File lib/teaspoon/formatter/junit.rb, line 25
def log_pending_spec(result)
  log_junit_spec(suite: result.suite, label: result.label) do
    log_line(%{  <skipped/>})
  end
end
log_result(_result) click to toggle source
# File lib/teaspoon/formatter/junit.rb, line 37
def log_result(_result)
  log_end_suite
end
log_runner(result) click to toggle source
# File lib/teaspoon/formatter/junit.rb, line 9
def log_runner(result)
  log_line(%{<?xml version="1.0" encoding="UTF-8"?>})
  log_line(%{<testsuites name="Teaspoon">})
  start_time = Time.parse(result.start).iso8601
  log_line(%{<testsuite name="#{escape(@suite_name)}" tests="#{@total_count}" timestamp="#{start_time}">})
end
log_suite(result) click to toggle source
# File lib/teaspoon/formatter/junit.rb, line 16
def log_suite(result)
  log_end_suite
  log_line(%{<testsuite name="#{escape(result.label)}">})
end
log_threshold_failure(message) click to toggle source
# File lib/teaspoon/formatter/junit.rb, line 46
def log_threshold_failure(message)
  log_line(%{<testsuite name="Coverage thresholds" tests="1">})
  log_junit_spec(suite: "Coverage thresholds", label: "were not met") do
    log_line(%{  <failure type="AssertionFailed">#{cdata(message)}</failure>})
  end
  log_line(%{</testsuite>})
end

Private Instance Methods

cdata(str) click to toggle source
# File lib/teaspoon/formatter/junit.rb, line 75
def cdata(str)
  "\n<![CDATA[\n#{str.gsub(/\n$/, '')}\n]]>\n"
end
escape(str) click to toggle source
# File lib/teaspoon/formatter/junit.rb, line 71
def escape(str)
  CGI.escapeHTML(str)
end
log_end_suite() click to toggle source
# File lib/teaspoon/formatter/junit.rb, line 60
def log_end_suite
  log_line(%{</testsuite>}) if @last_suite
end
log_junit_spec(opts) { || ... } click to toggle source
# File lib/teaspoon/formatter/junit.rb, line 64
def log_junit_spec(opts, &_block)
  log_line(%{<testcase classname="#{escape(opts[:suite])}" name="#{escape(opts[:label])}">})
  yield if block_given?
  log_line(%{<system-out>#{cdata(@stdout)}</system-out>}) unless @stdout.blank?
  log_line(%{</testcase>})
end