Sha256: ca979f8f571a554954ecf2fc7fcb1332e29f9465e3c862daf9edd8236d6d6273

Contents?: true

Size: 1.58 KB

Versions: 1

Compression:

Stored size: 1.58 KB

Contents

module Coco

  # Compute results of interest from the big results information (from
  # Coverage.result)
  class CoverageResult

    # Returns a Hash coverage for all the sources that live in the root
    # project folder.
    attr_reader :all_from_domain

    # Returns a Hash coverage for sources that are not sufficiently
    # covered. More technically, the sources that live in the root
    # project folder and for which the coverage percentage is under the
    # threshold.
    attr_reader :covered_from_domain

    # Public: Initialize a CoverageResult.
    #
    # config      - Hash
    # raw_results - Hash results obtained from Coverage.result.
    def initialize(config, raw_results)
      @exclude_files = config[:excludes]
      @threshold = config[:threshold]
      raise ArgumentError if @threshold < 0
      @result = raw_results
      exclude_external_sources
      exclude_files_user_dont_want
      if config[:exclude_above_threshold]
        @covered_from_domain = exclude_sources_above_threshold
      else
        @covered_from_domain = @all_from_domain
      end
    end

    private

    def exclude_external_sources
      here = Dir.pwd
      @all_from_domain = @result.select {|key, value| key.start_with?(here) }
    end

    def exclude_files_user_dont_want
      return if @exclude_files.nil?
      @exclude_files.each do |filename|
        @all_from_domain.delete(File.expand_path(filename))
      end
    end

    def exclude_sources_above_threshold
      @all_from_domain.select do |key, value|
        CoverageStat.coverage_percent(value) < @threshold
      end
    end

  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
coco-0.13.0 lib/coco/cover/coverage_result.rb