Skip to content

Instantly share code, notes, and snippets.

@amkisko
Forked from bronzdoc/merger_snippet.rb
Created October 4, 2024 06:59
Show Gist options
  • Save amkisko/98998d1cd2ff0dbf8e853425dd5e2ea7 to your computer and use it in GitHub Desktop.
Save amkisko/98998d1cd2ff0dbf8e853425dd5e2ea7 to your computer and use it in GitHub Desktop.
class SimpleCovMerger
def self.report_coverage(base_dir:, ci_project_path:, project_path:)
new(base_dir: base_dir, ci_project_path: ci_project_path, project_path: project_path).merge_results
end
attr_reader :base_dir, :ci_project_path, :project_path
def initialize(base_dir:, ci_project_path:, project_path:)
@base_dir = base_dir
@ci_project_path = ci_project_path
@project_path = project_path
end
def merge_results
require "simplecov"
require "json"
results = resultsets.map do |file|
hash_result = JSON.parse(clean(File.read(file)))
SimpleCov::Result.from_hash(hash_result)
end
result = SimpleCov::ResultMerger.merge_results(*results)
SimpleCov::ResultMerger.store_result(result)
end
private
def resultsets
Dir["#{base_dir}/.resultset-*.json"]
end
def clean(results)
results.gsub(ci_project_path, project_path)
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment