Patch SimpleCov to reuse code for coverage merger
This commit is contained in:
parent
be3ad008aa
commit
8e5e668e1a
1 changed files with 19 additions and 51 deletions
|
@ -1,61 +1,29 @@
|
|||
#!/usr/bin/env ruby
|
||||
begin
|
||||
load File.expand_path('../spring', __FILE__)
|
||||
rescue LoadError => e
|
||||
raise unless e.message.include?('spring')
|
||||
end
|
||||
|
||||
require 'simplecov'
|
||||
|
||||
def read(file)
|
||||
return unless File.exist?(file)
|
||||
data = File.read(file)
|
||||
return if data.nil? || data.length < 2
|
||||
data
|
||||
end
|
||||
module SimpleCov
|
||||
module ResultMerger
|
||||
class << self
|
||||
def resultset_files
|
||||
Dir.glob(File.join(SimpleCov.coverage_path, '*', '.resultset.json'))
|
||||
end
|
||||
|
||||
def load(file)
|
||||
begin
|
||||
JSON.parse(read(file))
|
||||
rescue
|
||||
{}
|
||||
end
|
||||
end
|
||||
def resultset_hashes
|
||||
resultset_files.map do |path|
|
||||
begin
|
||||
JSON.parse(File.read(path))
|
||||
rescue
|
||||
{}
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def files
|
||||
Dir.glob(File.join(SimpleCov.coverage_path, '*', '.resultset.json'))
|
||||
end
|
||||
|
||||
def resultsfiles
|
||||
files.map { |file| load(file) }
|
||||
end
|
||||
|
||||
def resultsets
|
||||
resultsfiles.reduce({}, :merge)
|
||||
end
|
||||
|
||||
def all_results
|
||||
results = []
|
||||
resultsets.each do |command_name, data|
|
||||
result = SimpleCov::Result.from_hash(command_name => data)
|
||||
# Only add result if the timeout is above the configured threshold
|
||||
if (Time.now - result.created_at) < SimpleCov.merge_timeout
|
||||
results << result
|
||||
def resultset
|
||||
resultset_hashes.reduce({}, :merge)
|
||||
end
|
||||
end
|
||||
end
|
||||
results
|
||||
end
|
||||
|
||||
def merged_result
|
||||
merged = {}
|
||||
results = all_results
|
||||
results.each do |result|
|
||||
merged = result.original_result.merge_resultset(merged)
|
||||
end
|
||||
result = SimpleCov::Result.new(merged)
|
||||
# Specify the command name
|
||||
result.command_name = results.map(&:command_name).sort.join(", ")
|
||||
result
|
||||
end
|
||||
|
||||
# Ignore CI environment
|
||||
|
@ -64,4 +32,4 @@ ENV['CI_BUILD_NAME'] = nil
|
|||
|
||||
require_relative '../spec/simplecov_env'
|
||||
|
||||
merged_result.format!
|
||||
SimpleCov::ResultMerger.merged_result.format!
|
||||
|
|
Loading…
Reference in a new issue