class RSpec::JUnit::Renderer

Attributes

builder[R]
duration[R]
examples[R]

Public Class Methods

new(examples, duration = 0) click to toggle source
# File lib/rspec/junit/renderer.rb, line 8
def initialize(examples, duration = 0)
  @examples = examples
  @duration = duration
  @builder = Builder::XmlMarkup.new indent: 2
end

Public Instance Methods

render() click to toggle source
# File lib/rspec/junit/renderer.rb, line 14
def render
  builder.instruct! :xml, version: '1.0', encoding: 'UTF-8'
  render_testsuites
  builder.target!
end
render_testcase(example) click to toggle source
# File lib/rspec/junit/renderer.rb, line 36
def render_testcase(example)
  builder.testcase(testcase_attributes(example)) do
    if example.failed?
      builder.failure(message: example.error_message, type: :failed) do
        builder.cdata! example.details
      end
    elsif example.pending?
      builder.skipped
    end
  end
end
render_testsuite(testsuite, examples) click to toggle source
# File lib/rspec/junit/renderer.rb, line 28
def render_testsuite(testsuite, examples)
  builder.testsuite(testsuite_attributes(testsuite, examples)) do
    examples.each do |example|
      render_testcase example
    end
  end
end
render_testsuites() click to toggle source
# File lib/rspec/junit/renderer.rb, line 20
def render_testsuites
  builder.testsuites(testsuites_attributes) do
    @examples.each_testsuite do |testsuite, examples|
      render_testsuite testsuite, examples
    end
  end
end

Private Instance Methods

testcase_attributes(example) click to toggle source
# File lib/rspec/junit/renderer.rb, line 70
def testcase_attributes(example)
  {
    name: example.name,
    time: example.run_time
  }
end
testsuite_attributes(name, examples) click to toggle source
# File lib/rspec/junit/renderer.rb, line 60
def testsuite_attributes(name, examples)
  {
    name: name,
    errors: 0,
    tests: examples.count,
    failures: examples.failed.count,
    skipped: examples.pending.count
  }
end
testsuites_attributes() click to toggle source
# File lib/rspec/junit/renderer.rb, line 49
def testsuites_attributes
  {
    errors: 0,
    tests: examples.count,
    failures: examples.failed.count,
    skipped: examples.pending.count,
    time: duration,
    timestamp: Time.now.iso8601
  }
end