Class: Fastlane::Plugin::MergeJunitReport::Merger
- Inherits:
-
Object
- Object
- Fastlane::Plugin::MergeJunitReport::Merger
- Defined in:
- lib/fastlane/plugin/merge_junit_report/merger.rb
Overview
Merge several junit reports into one single report
Instance Method Summary collapse
-
#initialize(reports) ⇒ Merger
constructor
Initializes an instance of Merger.
-
#merge ⇒ REXML::Document
Merges reports passed in via constructor.
Constructor Details
#initialize(reports) ⇒ Merger
Initializes an instance of Merger
9 10 11 |
# File 'lib/fastlane/plugin/merge_junit_report/merger.rb', line 9 def initialize(reports) @reports = reports end |
Instance Method Details
#merge ⇒ REXML::Document
Merges reports passed in via constructor
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/fastlane/plugin/merge_junit_report/merger.rb', line 15 def merge baseline = @reports.first @reports.drop(1).each do |report| report.elements.each('//testsuite') do |suite_to_merge| suite_name = suite_to_merge.attributes['name'] baseline_suite = REXML::XPath.first(baseline, "//testsuite[@name='#{suite_name}']") next unless baseline_suite suite_to_merge.elements.each('testcase') do |case_to_merge| classname = case_to_merge.attributes['classname'] name = case_to_merge.attributes['name'] baseline_case = REXML::XPath.first(baseline_suite, "testcase[@name='#{name}' and @classname='#{classname}']") # Replace baseline_case with case_to_merge if baseline_case baseline_case.parent.insert_after(baseline_case, case_to_merge) baseline_case.parent.delete_element(baseline_case) end end end end recalculate_failures(baseline) baseline end |