class SimpleCov::Result
A simplecov code coverage result, initialized from the Hash Ruby's built-in coverage library generates (Coverage.result).
Attributes
Explicitly set the command name that was used for this coverage result. Defaults to SimpleCov.command_name
Explicitly set the Time this result has been created
Returns all files that are applicable to this result (sans filters!) as instances of SimpleCov::SourceFile
. Aliased as :source_files
Returns the original Coverage.result used for this instance of SimpleCov::Result
Returns all files that are applicable to this result (sans filters!) as instances of SimpleCov::SourceFile
. Aliased as :source_files
Public Class Methods
Loads a SimpleCov::Result#to_hash
dump
# File lib/simplecov/result.rb, line 74 def self.from_hash(hash) command_name, data = hash.first result = SimpleCov::Result.new(data["coverage"]) result.command_name = command_name result.created_at = Time.at(data["timestamp"]) result end
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) result = adapt_result(original_result) @original_result = result.freeze @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
The command name that launched this result. Delegated to SimpleCov.command_name if not set manually
# File lib/simplecov/result.rb, line 59 def command_name @command_name ||= SimpleCov.command_name end
Defines when this result has been created. Defaults to Time.now
# File lib/simplecov/result.rb, line 53 def created_at @created_at ||= Time.now end
Returns all filenames for source files contained in this result
# File lib/simplecov/result.rb, line 38 def filenames files.map(&:filename) end
Applies the configured SimpleCov.formatter on this result
# File lib/simplecov/result.rb, line 48 def format! SimpleCov.formatter.new.format(self) end
Returns a Hash of groups for this result. Define groups using SimpleCov.add_group 'Models', 'app/models'
# File lib/simplecov/result.rb, line 43 def groups @groups ||= SimpleCov.grouped(files) end
Returns a hash representation of this Result
that can be used for marshalling it into JSON
# File lib/simplecov/result.rb, line 64 def to_hash { command_name => { "coverage" => coverage, "timestamp" => created_at.to_i } } end
Private Instance Methods
# File lib/simplecov/result.rb, line 105 def adapt_pre_simplecov_0_18_result(result) result.map do |file_path, line_coverage_data| [file_path, {"lines" => line_coverage_data}] end.to_h end
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/colszowka/simplecov/pull/824#issuecomment-576049747
# File lib/simplecov/result.rb, line 90 def adapt_result(result) if pre_simplecov_0_18_result?(result) adapt_pre_simplecov_0_18_result(result) else result end end
# File lib/simplecov/result.rb, line 111 def coverage keys = original_result.keys & filenames Hash[keys.zip(original_result.values_at(*keys))] end
Applies all configured SimpleCov
filters on this result's source files
# File lib/simplecov/result.rb, line 117 def filter! @files = SimpleCov.filtered(files) end
pre 0.18 coverage data pointed from file directly to an array of line coverage
# File lib/simplecov/result.rb, line 99 def pre_simplecov_0_18_result?(result) _key, data = result.first data.is_a?(Array) end