Module: SimpleCov::Combine::ResultsCombiner

Defined in:
lib/simplecov/combine/results_combiner.rb

Overview

There might be reports from different kinds of tests, e.g. RSpec and Cucumber. We need to combine their results into unified one. This class does that. To unite the results on file basis, it leverages the combine of lines and branches inside each file within given results.

Class Method Summary collapse

Class Method Details

.combine(*results) ⇒ Hash

Combine process explanation

> ResultCombiner: define all present files between results and start combine on file level.

> FileCombiner: collect result of next combine levels lines and branches.

> LinesCombiner: combine lines results.

> BranchesCombiner: combine branches results.



22
23
24
25
26
# File 'lib/simplecov/combine/results_combiner.rb', line 22

def combine(*results)
  results.reduce({}) do |combined_results, next_result|
    combine_result_sets(combined_results, next_result)
  end
end

.combine_file_coverage(coverage_a, coverage_b) ⇒ Hash

Combine two files coverage results



55
56
57
# File 'lib/simplecov/combine/results_combiner.rb', line 55

def combine_file_coverage(coverage_a, coverage_b)
  Combine.combine(Combine::FilesCombiner, coverage_a, coverage_b)
end

.combine_result_sets(combined_results, result) ⇒ Hash

Manage combining results on files level



36
37
38
39
40
41
42
43
44
45
# File 'lib/simplecov/combine/results_combiner.rb', line 36

def combine_result_sets(combined_results, result)
  results_files = combined_results.keys | result.keys

  results_files.each_with_object({}) do |file_name, file_combination|
    file_combination[file_name] = combine_file_coverage(
      combined_results[file_name],
      result[file_name]
    )
  end
end