class MetricFu::RCovFormatCoverage

Constants

NEW_FILE_MARKER

Public Class Methods

new(rcov_text) click to toggle source
# File lib/metric_fu/metrics/rcov/rcov_format_coverage.rb, line 5
def initialize(rcov_text)
  fail "no rcov text" if rcov_text.nil?
  @rcov_text = rcov_text
end

Public Instance Methods

to_h() click to toggle source
# File lib/metric_fu/metrics/rcov/rcov_format_coverage.rb, line 10
def to_h
  rcov_text = @rcov_text.split(NEW_FILE_MARKER)

  rcov_text.shift # Throw away the first entry - it's the execution time etc.

  files = assemble_files(rcov_text)

  TestCoverage.new(files).to_h
end

Private Instance Methods

assemble_files(rcov_text) click to toggle source
# File lib/metric_fu/metrics/rcov/rcov_format_coverage.rb, line 22
def assemble_files(rcov_text)
  files = {}
  rcov_text.each_slice(2) { |out| files[out.first.strip] = out.last }
  files.each_pair { |fname, content| files[fname] = content.split("\n") }
  files.each_pair do |fname, content|
    content.map! do |raw_line|
      covered_line = if raw_line.start_with?("--")
                       nil # simplecov ignores some lines
                     elsif raw_line.start_with?("!!")
                       0
                     else
                       1
                     end
      RCovLine.new(raw_line[3..-1], covered_line).to_h
    end
    content.reject! { |line| line[:content].to_s == "" }
    files[fname] = { lines: content }
  end
  files
end