Skip to content
Snippets Groups Projects
Commit 647da42a authored by Kamil Trzcinski's avatar Kamil Trzcinski Committed by Grzegorz Bizon
Browse files

Merge coverage report

parent ef30678f
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -61,6 +61,15 @@ update-knapsack:
only:
- master
 
update-coverage:
<<: *knapsack-state
stage: post-test
script:
- bundle exec rake ci:simplecov:merge
artifacts:
paths:
- coverage/
# Execute all testing suites
 
.use-db: &use-db
Loading
Loading
@@ -83,6 +92,7 @@ update-knapsack:
artifacts:
paths:
- knapsack/
- coverage/
 
.spinach-knapsack: &spinach-knapsack
stage: test
Loading
Loading
@@ -99,6 +109,7 @@ update-knapsack:
artifacts:
paths:
- knapsack/
- coverage/
 
rspec 0 20: *rspec-knapsack
rspec 1 20: *rspec-knapsack
Loading
Loading
# .simplecov
SimpleCov.start 'rails' do
merge_timeout 3600
end
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
if ENV['SIMPLECOV']
require 'simplecov'
SimpleCov.start :rails
require 'simplecov-rcov'
SimpleCov.start :rails do
if ENV['CI_BUILD_NAME']
coverage_dir "coverage/#{ENV['CI_BUILD_NAME']}"
command_name ENV['CI_BUILD_NAME']
merge_timeout 7200
end
end
end
 
ENV["RAILS_ENV"] ||= 'test'
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment