module SimpleCov::Combine::ResultsCombiner
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.
Public Instance Methods
Source
# 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
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.¶ ↑
@return [Hash]
Source
# 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
two files coverage results
@param [Hash] coverage_a @param [Hash] coverage_b
@return [Hash]
Source
# 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
Manage combining results on files level
@param [Hash] combined_results @param [Hash] result
@return [Hash]