From bd709e29b50940409d6b1abc869fe2969d6a3b51 Mon Sep 17 00:00:00 2001 From: Kamil Trzcinski Date: Thu, 30 Jun 2016 16:08:01 +0200 Subject: [PATCH] Use `scripts/merge-simplecov` --- .gitlab-ci.yml | 2 +- lib/tasks/ci/simplecov.rake | 63 ----------------------------------- scripts/merge-simplecov | 65 +++++++++++++++++++++++++++++++++++++ 3 files changed, 66 insertions(+), 64 deletions(-) delete mode 100644 lib/tasks/ci/simplecov.rake create mode 100755 scripts/merge-simplecov diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b0010572833..9a90c99a996 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -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/ diff --git a/lib/tasks/ci/simplecov.rake b/lib/tasks/ci/simplecov.rake deleted file mode 100644 index 0c8322940ec..00000000000 --- a/lib/tasks/ci/simplecov.rake +++ /dev/null @@ -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 diff --git a/scripts/merge-simplecov b/scripts/merge-simplecov new file mode 100755 index 00000000000..b59ff0ae9a0 --- /dev/null +++ b/scripts/merge-simplecov @@ -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!