Struct.new(:name, :tests, :time, :failures, :errors, :skipped, :assertions)
Basic structure representing the running of a test suite. Used to time tests and store results.
Creates the xml builder instance used to create the report xml document.
# File lib/ci/reporter/test_suite.rb, line 68 def create_builder require 'builder' # :escape_attrs is obsolete in a newer version, but should do no harm Builder::XmlMarkup.new(:indent => 2, :escape_attrs => true) end
Finishes timing the test suite.
# File lib/ci/reporter/test_suite.rb, line 57 def finish self.tests = testcases.size self.time = Time.now - @start self.failures = testcases.inject(0) {|sum,tc| sum += tc.failures.select{|f| f.failure? }.size } self.errors = testcases.inject(0) {|sum,tc| sum += tc.failures.select{|f| f.error? }.size } self.skipped = testcases.inject(0) {|sum,tc| sum += (tc.skipped? ? 1 : 0) } self.stdout = @capture_out.finish if @capture_out self.stderr = @capture_err.finish if @capture_err end
Starts timing the test suite.
# File lib/ci/reporter/test_suite.rb, line 48 def start @start = Time.now unless ENV['CI_CAPTURE'] == "off" @capture_out = OutputCapture.new($stdout) {|io| $stdout = io } @capture_err = OutputCapture.new($stderr) {|io| $stderr = io } end end
Creates an xml string containing the test suite results.
# File lib/ci/reporter/test_suite.rb, line 75 def to_xml builder = create_builder # more recent version of Builder doesn't need the escaping def builder.trunc!(txt) txt.sub(/\n.*/, '...') end builder.instruct! attrs = {} each_pair {|k,v| attrs[k] = builder.trunc!(v.to_s) unless v.nil? || v.to_s.empty? } builder.testsuite(attrs) do @testcases.each do |tc| tc.to_xml(builder) end builder.tag! "system-out" do builder.text! self.stdout end builder.tag! "system-err" do builder.text! self.stderr end end end
Generated with the Darkfish Rdoc Generator 2.