class Swiftrail::Junit::Parser
Attributes
junit_patterns[R]
Public Class Methods
new(junit_patterns)
click to toggle source
# File lib/swiftrail/junit/parser.rb, line 7 def initialize(junit_patterns) @junit_patterns = junit_patterns end
Public Instance Methods
parse()
click to toggle source
# File lib/swiftrail/junit/parser.rb, line 11 def parse all_files.map(&method(:test_suites)).flatten end
Private Instance Methods
all_files()
click to toggle source
# File lib/swiftrail/junit/parser.rb, line 19 def all_files junit_patterns.map do |junit_pattern| Dir[junit_pattern] end.flatten.uniq end
create_test_suite(test_suite)
click to toggle source
# File lib/swiftrail/junit/parser.rb, line 33 def create_test_suite(test_suite) TestSuite.new( test_suite[:name], test_cases(test_suite) ) end
failures(test_case)
click to toggle source
# File lib/swiftrail/junit/parser.rb, line 52 def failures(test_case) test_case.children.select { |child| child.name == 'failure' }.map { |failure| failure.content } end
read_report(file)
click to toggle source
# File lib/swiftrail/junit/parser.rb, line 29 def read_report(file) Nokogiri::XML(IO.read(file)) end
test_cases(test_suite)
click to toggle source
# File lib/swiftrail/junit/parser.rb, line 40 def test_cases(test_suite) test_suite.xpath('.//testcase').map do |test_case| TestCase.new( test_case[:classname], test_case[:classname].split('.').last, test_case[:name], failures(test_case), test_case[:time].to_f ) end end
test_suites(file)
click to toggle source
# File lib/swiftrail/junit/parser.rb, line 25 def test_suites(file) read_report(file).xpath('//testsuite').map(&method(:create_test_suite)) end