class SimpleCov::Result

A simplecov code coverage result, initialized from the Hash Ruby’s built-in coverage library generates (Coverage.result).

Attributes

command_name[W]

Explicitly set the command name that was used for this coverage result. Defaults to SimpleCov.command_name

created_at[W]

Explicitly set the Time this result has been created

files[R]

Returns all files that are applicable to this result (sans filters!) as instances of SimpleCov::SourceFile. Aliased as :source_files

original_result[R]

Returns the original Coverage.result used for this instance of SimpleCov::Result

source_files[R]

Returns all files that are applicable to this result (sans filters!) as instances of SimpleCov::SourceFile. Aliased as :source_files

Public Class Methods

from_hash(hash) click to toggle source

Loads a SimpleCov::Result#to_hash dump

# File lib/simplecov/result.rb, line 80
def self.from_hash(hash)
  hash.map do |command_name, data|
    new(data.fetch("coverage"), command_name: command_name, created_at: Time.at(data["timestamp"]))
  end
end
new(original_result, command_name: nil, created_at: nil) click to toggle source

Initialize a new SimpleCov::Result from given Coverage.result (a Hash of filenames each containing an array of coverage data)

# File lib/simplecov/result.rb, line 28
def initialize(original_result, command_name: nil, created_at: nil)
  result = adapt_result(original_result)
  @original_result = result.freeze
  @command_name = command_name
  @created_at = created_at
  @files = SimpleCov::FileList.new(result.map do |filename, coverage|
    SimpleCov::SourceFile.new(filename, JSON.parse(JSON.dump(coverage))) if File.file?(filename)
  end.compact.sort_by(&:filename))
  filter!
end

Public Instance Methods

command_name() click to toggle source

The command name that launched this result. Delegated to SimpleCov.command_name if not set manually

# File lib/simplecov/result.rb, line 61
def command_name
  @command_name ||= SimpleCov.command_name
end
created_at() click to toggle source

Defines when this result has been created. Defaults to Time.now

# File lib/simplecov/result.rb, line 55
def created_at
  @created_at ||= Time.now
end
filenames() click to toggle source

Returns all filenames for source files contained in this result

# File lib/simplecov/result.rb, line 40
def filenames
  files.map(&:filename)
end
format!() click to toggle source

Applies the configured SimpleCov.formatter on this result

# File lib/simplecov/result.rb, line 50
def format!
  SimpleCov.formatter.new.format(self)
end
groups() click to toggle source

Returns a Hash of groups for this result. Define groups using SimpleCov.add_group ‘Models’, ‘app/models’

# File lib/simplecov/result.rb, line 45
def groups
  @groups ||= SimpleCov.grouped(files)
end
time_since_creation() click to toggle source
# File lib/simplecov/result.rb, line 75
def time_since_creation
  Time.now - created_at
end
to_hash() click to toggle source

Returns a hash representation of this Result that can be used for marshalling it into JSON

# File lib/simplecov/result.rb, line 66
def to_hash
  {
    command_name => {
      "coverage" => coverage,
      "timestamp" => created_at.to_i
    }
  }
end

Private Instance Methods

adapt_pre_simplecov_0_18_result(result) click to toggle source
# File lib/simplecov/result.rb, line 107
def adapt_pre_simplecov_0_18_result(result)
  result.transform_values do |line_coverage_data|
    {"lines" => line_coverage_data}
  end
end
adapt_result(result) click to toggle source

We changed the format of the raw result data in simplecov, as people are likely to have “old” resultsets lying around (but not too old so that they’re still considered we can adapt them). See github.com/simplecov-ruby/simplecov/pull/824#issuecomment-576049747

# File lib/simplecov/result.rb, line 92
def adapt_result(result)
  if pre_simplecov_0_18_result?(result)
    adapt_pre_simplecov_0_18_result(result)
  else
    result
  end
end
coverage() click to toggle source
# File lib/simplecov/result.rb, line 113
def coverage
  keys = original_result.keys & filenames
  Hash[keys.zip(original_result.values_at(*keys))]
end
filter!() click to toggle source

Applies all configured SimpleCov filters on this result’s source files

# File lib/simplecov/result.rb, line 119
def filter!
  @files = SimpleCov.filtered(files)
end
pre_simplecov_0_18_result?(result) click to toggle source

pre 0.18 coverage data pointed from file directly to an array of line coverage

# File lib/simplecov/result.rb, line 101
def pre_simplecov_0_18_result?(result)
  _key, data = result.first

  data.is_a?(Array)
end