Sha256: 28ff048f25967c488197ca8f41af8c9334842a0425a96bf5db988bfea503b907

Contents?: true

Size: 1.17 KB

Versions: 5

Compression:

Stored size: 1.17 KB

Contents

# frozen_string_literal: true

module SimpleCov
  module Combine
    #
    # Combine different branch coverage results on single file.
    #
    # Should be called through `SimpleCov.combine`.
    module BranchesCombiner
    module_function

      #
      # Return merged branches or the existed branche if other is missing.
      #
      # Branches inside files are always same if they exists, the difference only in coverage count.
      # Branch coverage report for any conditional case is built from hash, it's key is a condition and
      # it's body is a hash << keys from condition and value is coverage rate >>.
      # ex: branches =>{ [:if, 3, 8, 6, 8, 36] => {[:then, 4, 8, 6, 8, 12] => 1, [:else, 5, 8, 6, 8, 36]=>2}, other conditions...}
      # We create copy of result and update it values depending on the combined branches coverage values.
      #
      # @return [Hash]
      #
      def combine(coverage_a, coverage_b)
        coverage_a.merge(coverage_b) do |_condition, branches_inside_a, branches_inside_b|
          branches_inside_a.merge(branches_inside_b) do |_branch, a_count, b_count|
            a_count + b_count
          end
        end
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
simplecov-0.18.1 lib/simplecov/combine/branches_combiner.rb
simplecov-0.18.0 lib/simplecov/combine/branches_combiner.rb
simplecov-0.18.0.beta3 lib/simplecov/combine/branches_combiner.rb
simplecov-0.18.0.beta2 lib/simplecov/combine/branches_combiner.rb
simplecov-0.18.0.beta1 lib/simplecov/combine/branches_combiner.rb