class PactJUnitFormatter

Public Instance Methods

dump_summary(notification) click to toggle source
# File lib/pact_junit_formatter.rb, line 16
def dump_summary(notification)
  @notification = notification
  xml_dump(@examples)
end
stop(notification) click to toggle source
# File lib/pact_junit_formatter.rb, line 12
def stop(notification)
  @examples = rearrange(notification.notifications.map {|n| PactExample.new(n) })
end

Private Instance Methods

dump_testsuite(xml, package_name, es) click to toggle source
# File lib/pact_junit_formatter.rb, line 38
def dump_testsuite(xml, package_name, es)
  failure_count = es.select {|e| e.status == :failed }.size
  duration = es.map {|e| e.run_time }.inject(0, &:+)
  timestamp = es.map {|e| e.started_at }.sort.first.iso8601

  xml.testsuite(name: package_name, tests: es.size, failures: failure_count, time: '%.6f' % duration, timestamp: timestamp) do
    xml.properties
    es.each {|e| ExampleDumper.new(xml, e).call }
  end
end
rearrange(examples) click to toggle source
# File lib/pact_junit_formatter.rb, line 23
def rearrange(examples)
  examples.inject(Hash.new {|h, k| h[k] = [] }) do |h, example|
    h[example.package_name] << example
    h
  end
end
xml_dump(examples) click to toggle source
# File lib/pact_junit_formatter.rb, line 30
def xml_dump(examples)
  xml = Builder::XmlMarkup.new target: output, indent: 2
  xml.instruct!
  xml.testsuites(tests: @notification.examples.size, failures: @notification.failed_examples.size, time: @notification.duration) do
    examples.each {|package_name, es| dump_testsuite(xml, package_name, es) }
  end
end