class XunitOutput

Creates a XML report that conforms to # svn.jenkins-ci.org/trunk/hudson/dtkit/dtkit-format/dtkit-junit-model/src/main/resources/com/thalesgroup/dtkit/junit/model/xsd/junit-4.xsd

Public Class Methods

new(filename) click to toggle source
# File lib/ui-auto-monkey/tuneup/test_runner/xunit_output.rb, line 59
def initialize(filename)
  @filename = filename
  @suite = TestSuite.new(File.basename(filename, File.extname(filename)))
end

Public Instance Methods

add(line) click to toggle source
# File lib/ui-auto-monkey/tuneup/test_runner/xunit_output.rb, line 64
def add(line)
  return if @suite.test_cases.empty?
  @suite.test_cases.last << line
end
add_status(status, date, time, time_zone, msg) click to toggle source
# File lib/ui-auto-monkey/tuneup/test_runner/xunit_output.rb, line 69
def add_status(status, date, time, time_zone, msg)
  case status
  when :start
    @suite.test_cases << TestCase.new(msg)
  when :pass
    @suite.test_cases.last.pass! if @suite.test_cases.last != nil
  when :fail
    @suite.test_cases.last.fail! if @suite.test_cases.last != nil
  else
    if @suite.test_cases.last != nil && @suite.test_cases.last.time == 0
      @suite.test_cases.last << "#{status.to_s.capitalize}: #{msg}"
    end
  end
end
close() click to toggle source
# File lib/ui-auto-monkey/tuneup/test_runner/xunit_output.rb, line 84
def close
  File.open(@filename, 'w') { |f| f.write(serialize(@suite)) }
end
serialize(suite) click to toggle source
# File lib/ui-auto-monkey/tuneup/test_runner/xunit_output.rb, line 100
def serialize(suite)
  output = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>" << "\n"
  output << "<testsuite name=\"#{xml_escape(suite.name)}\" timestamp=\"#{suite.timestamp}\" time=\"#{suite.time}\" tests=\"#{suite.test_cases.count}\" failures=\"#{suite.failures}\">" << "\n"
  
  suite.test_cases.each do |test|
    output << "  <testcase name=\"#{xml_escape(test.name)}\" time=\"#{test.time}\">" << "\n"
    if test.failed?
      output << "    <failure>#{test.messages.map { |m| xml_escape(m) }.join("\n")}</failure>" << "\n"
    end
    output << "  </testcase>" << "\n"
  end

  output << "</testsuite>" << "\n"
end
xml_escape(input) click to toggle source
# File lib/ui-auto-monkey/tuneup/test_runner/xunit_output.rb, line 88
def xml_escape(input)
   result = input.dup

   result.gsub!("&", "&amp;")
   result.gsub!("<", "&lt;")
   result.gsub!(">", "&gt;")
   result.gsub!("'", "&apos;")
   result.gsub!("\"", "&quot;")

   return result
end