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 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
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
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
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
Returns all filenames for source files contained in this result
# File lib/simplecov/result.rb, line 40 def filenames files.map(&:filename) end
Applies the configured SimpleCov.formatter on this result
# File lib/simplecov/result.rb, line 50 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 45 def groups @groups ||= SimpleCov.grouped(files) end
# File lib/simplecov/result.rb, line 75 def time_since_creation Time.now - created_at end
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
# 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
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
# File lib/simplecov/result.rb, line 113 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 119 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 101 def pre_simplecov_0_18_result?(result) _key, data = result.first data.is_a?(Array) end