module SimpleCov::Combine::LinesCombiner

Combine two different lines coverage results on same file

Should be called through ‘SimpleCov.combine`.

Public Instance Methods

combine(coverage_a, coverage_b) click to toggle source
# File lib/simplecov/combine/lines_combiner.rb, line 12
def combine(coverage_a, coverage_b)
  coverage_a
    .zip(coverage_b)
    .map do |coverage_a_val, coverage_b_val|
      merge_line_coverage(coverage_a_val, coverage_b_val)
    end
end
merge_line_coverage(first_val, second_val) click to toggle source

Return depends on coverage in a specific line

@param [Integer || nil] first_val @param [Integer || nil] second_val

Logic:

> nil + 0 = nil

> nil + nil = nil

> int + int = int

@return [Integer || nil]

# File lib/simplecov/combine/lines_combiner.rb, line 32
def merge_line_coverage(first_val, second_val)
  sum = first_val.to_i + second_val.to_i

  if sum.zero? && (first_val.nil? || second_val.nil?)
    nil
  else
    sum
  end
end