Sha256: 65223fd9f809e9e619a6e3b789fa8df32b52248a1cd60af13789d79d0d094703

Contents?: true

Size: 1.77 KB

Versions: 2

Compression:

Stored size: 1.77 KB

Contents

module Xcov
  class Report < Xcov::Base

    attr_accessor :coverage
    attr_accessor :targets
    attr_accessor :summary
    attr_accessor :target_templates

    def initialize (targets)
      @targets = targets
      @coverage = average_coverage(targets)
      @displayable_coverage = self.create_displayable_coverage
      @coverage_color = self.create_coverage_color
      @summary = self.create_summary
    end

    def average_coverage targets
      return 0 if targets.count == 0

      coverage = 0
      targets.each do |target|
        coverage = coverage + target.coverage
      end
      coverage / targets.count
    end

    def print_description
      puts "Total coverage: (#{@coverage})"
      @targets.each do |target|
        target.print_description
      end
    end

    def html_value
      @target_templates = ""
      @targets.each do |target|
        @target_templates << target.html_value
      end

      Function.template("report").result(binding)
    end

    # Class methods

    def self.map dictionary
      targets = Report.filter_targets dictionary["targets"]

      # Create target objects
      targets = targets.map { |target| Target.map(target)}

      Report.new(targets)
    end

    def self.filter_targets targets
      filtered_targets = Array.new(targets)
      filtered_targets = filtered_targets.select { |target| !target["name"].include?(".xctest") } if !Xcov.config[:include_test_targets]
      filtered_targets = filtered_targets.select { |target| !self.excluded_targets.include?(target["name"])}

      filtered_targets
    end

    def self.excluded_targets
      excluded_targets = Array.new()

      if Xcov.config[:exclude_targets]
        excluded_targets = Xcov.config[:exclude_targets].split(/\s*,\s*/)
      end

      excluded_targets
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
xcov-0.8 lib/xcov/model/report.rb
xcov-0.7 lib/xcov/model/report.rb