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!("&", "&") result.gsub!("<", "<") result.gsub!(">", ">") result.gsub!("'", "'") result.gsub!("\"", """) return result end