Use `scripts/merge-simplecov`
This commit is contained in:
parent
647da42af9
commit
bd709e29b5
|
@ -65,7 +65,7 @@ update-coverage:
|
|||
<<: *knapsack-state
|
||||
stage: post-test
|
||||
script:
|
||||
- bundle exec rake ci:simplecov:merge
|
||||
- bundle exec scripts/merge-simplecov
|
||||
artifacts:
|
||||
paths:
|
||||
- coverage/
|
||||
|
|
|
@ -1,63 +0,0 @@
|
|||
require 'simplecov'
|
||||
|
||||
namespace :ci do
|
||||
namespace :simplecov do
|
||||
desc 'GitLab CI | Merge all coverage results and generate report'
|
||||
task merge: :environment do
|
||||
merged_result.format!
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def read(file)
|
||||
return unless File.exist?(file)
|
||||
data = File.read(file)
|
||||
return if data.nil? || data.length < 2
|
||||
data
|
||||
end
|
||||
|
||||
def load(file)
|
||||
begin
|
||||
JSON.parse(read(file))
|
||||
rescue
|
||||
{}
|
||||
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
|
||||
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
|
||||
end
|
||||
end
|
|
@ -0,0 +1,65 @@
|
|||
#!/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
|
||||
|
||||
def load(file)
|
||||
begin
|
||||
JSON.parse(read(file))
|
||||
rescue
|
||||
{}
|
||||
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
|
||||
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
|
||||
|
||||
SimpleCov.configure do
|
||||
merge_timeout 7200
|
||||
end
|
||||
|
||||
merged_result.format!
|
Loading…
Reference in New Issue