class XCPretty::JUnit
Constants
- FILEPATH
Public Class Methods
new(options)
click to toggle source
Calls superclass method
# File lib/xcpretty/reporters/junit.rb, line 16 def initialize(options) super(options) @directory = `pwd`.strip @document = REXML::Document.new @document << REXML::XMLDecl.new('1.0', 'UTF-8') @document.add_element('testsuites') @total_fails = 0 @total_tests = 0 end
Public Instance Methods
finish()
click to toggle source
Calls superclass method
# File lib/xcpretty/reporters/junit.rb, line 61 def finish set_test_counters @document.root.attributes['tests'] = @total_tests @document.root.attributes['failures'] = @total_fails super end
format_failing_test(classname, test_case, reason, file)
click to toggle source
# File lib/xcpretty/reporters/junit.rb, line 50 def format_failing_test(classname, test_case, reason, file) test_node = suite(classname).add_element('testcase') test_node.attributes['classname'] = classname test_node.attributes['name'] = test_case fail_node = test_node.add_element('failure') fail_node.attributes['message'] = reason fail_node.text = file.sub(@directory + '/', '') @test_count += 1 @fail_count += 1 end
format_passing_test(classname, test_case, time)
click to toggle source
# File lib/xcpretty/reporters/junit.rb, line 34 def format_passing_test(classname, test_case, time) test_node = suite(classname).add_element('testcase') test_node.attributes['classname'] = classname test_node.attributes['name'] = test_case test_node.attributes['time'] = time @test_count += 1 end
format_pending_test(classname, test_case)
click to toggle source
# File lib/xcpretty/reporters/junit.rb, line 42 def format_pending_test(classname, test_case) test_node = suite(classname).add_element('testcase') test_node.attributes['classname'] = classname test_node.attributes['name'] = test_case test_node.add_element('skipped') @test_count += 1 end
format_test_run_started(name)
click to toggle source
# File lib/xcpretty/reporters/junit.rb, line 30 def format_test_run_started(name) @document.root.add_attribute('name', name) end
handle(line)
click to toggle source
# File lib/xcpretty/reporters/junit.rb, line 26 def handle(line) @parser.parse(line) end
load_dependencies()
click to toggle source
# File lib/xcpretty/reporters/junit.rb, line 6 def load_dependencies unless @@loaded ||= false require 'fileutils' require 'pathname' require 'rexml/document' require 'rexml/formatters/pretty' @@loaded = true end end
write_report()
click to toggle source
# File lib/xcpretty/reporters/junit.rb, line 68 def write_report formatter = REXML::Formatters::Pretty.new(2) formatter.compact = true output_file = File.open(@filepath, 'w+') result = formatter.write(@document, output_file) output_file.close result end
Private Instance Methods
set_test_counters()
click to toggle source
# File lib/xcpretty/reporters/junit.rb, line 90 def set_test_counters if @last_suite @last_suite.attributes['tests'] = @test_count @last_suite.attributes['failures'] = @fail_count end @total_fails += @fail_count || 0 @total_tests += @test_count || 0 @test_count = 0 @fail_count = 0 end
suite(classname)
click to toggle source
# File lib/xcpretty/reporters/junit.rb, line 79 def suite(classname) if @last_suite && @last_suite.attributes['name'] == classname return @last_suite end set_test_counters @last_suite = @document.root.add_element('testsuite') @last_suite.attributes['name'] = classname @last_suite end