class Fastlane::Helper::PrettyJunitHelper

Public Class Methods

parse_context(class_path) click to toggle source
# File lib/fastlane/plugin/pretty_junit/helper/pretty_junit_helper.rb, line 39
def self.parse_context(class_path) 
    dot_rindex = class_path.rindex('.')
    class_name = dot_rindex ? class_path[dot_rindex+1..-1] : ''
    return class_name.gsub(/\$/, ', ')
end
parse_junit_xml(file_path) click to toggle source
# File lib/fastlane/plugin/pretty_junit/helper/pretty_junit_helper.rb, line 7
def self.parse_junit_xml(file_path)
  results = OpenStruct.new(skipped:[], failed:[], passed:[])
  xml_doc = File.open(file_path) { |f| Nokogiri::XML(f) }

  failed_nodes = xml_doc.xpath("//testcase[failure]")
  skipped_nodes = xml_doc.xpath("//testcase[skipped]")
  passed_nodes = xml_doc.xpath("//testcase[not(failure) and not(skipped)]")

  passed_nodes.each do |node|
    class_path = node['classname']
    context = parse_context(class_path)
    result = OpenStruct.new(name: node['name'], context: context, class_path: class_path, duration: node['time'])
    results.passed.push result
  end
  skipped_nodes.each do |node|
    class_path = node['classname']
    context = parse_context(class_path)
    result = OpenStruct.new(name: node['name'], context: context, class_path: class_path, duration: node['time'])
    results.skipped.push result
  end
  failed_nodes.each do |node|
    class_path = node['classname']
    context = parse_context(class_path)
    failure = node.xpath('.//failure').first
    result = OpenStruct.new(name: node['name'], context: context, class_path: class_path, duration: node['time'],
                            fail_message: failure['message'], stack_trace: failure.text)
    results.failed.push result
  end

  return results
end