diff options
Diffstat (limited to 'scripts/merge-simplecov')
-rwxr-xr-x | scripts/merge-simplecov | 37 |
1 files changed, 36 insertions, 1 deletions
diff --git a/scripts/merge-simplecov b/scripts/merge-simplecov index 0d764d2b406..2af5f8c0918 100755 --- a/scripts/merge-simplecov +++ b/scripts/merge-simplecov @@ -46,11 +46,42 @@ def all_results results end +def merge_resultset(a1, a2) + return a1 || [] unless a2 + return a2 || [] unless a1 + + new_array = a1.dup + a2.each_with_index do |element, i| + if element.nil? && new_array[i].nil? + new_array[i] = nil + elsif element.nil? && new_array[i] == 0 || element == 0 && new_array[i].nil? + new_array[i] = nil + else + local_value = element || 0 + other_value = new_array[i] || 0 + new_array[i] = local_value + other_value + end + end + new_array +end + +def merge_hashes(h1, h2) + new_resultset = {} + (h1.keys + h2.keys).each do |filename| + new_resultset[filename] = [] + end + + new_resultset.each_key do |filename| + new_resultset[filename] = merge_resultset(h1[filename], h2[filename]) + end + new_resultset +end + def merged_result merged = {} results = all_results results.each do |result| - merged = result.original_result.merge_resultset(merged) + merged = merge_hashes(result.original_result, merged) end result = SimpleCov::Result.new(merged) # Specify the command name @@ -58,6 +89,10 @@ def merged_result result end +# Ignore CI environment +ENV['CI'] = nil +ENV['CI_BUILD_NAME'] = nil + require_relative '../spec/simplecov_env' merged_result.format! |