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