3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
# File 'lib/feature_map/private/simple_cov_resultsets.rb', line 3
def self.fetch_coverage_stats(simplecov_resultsets)
root_dir = "#{Dir.pwd}/"
simplecov_resultsets.reduce({}) do |combined_stats, simplecov_resultset|
coverage_data = simplecov_resultset['RSpec']['coverage']
file_stats = coverage_data.map do |absolute_path, file_data|
relative_path = absolute_path.sub(root_dir, '')
lines_data = file_data['lines']
executable_lines = lines_data.compact.size
covered_lines = lines_data.count { |line| line&.positive? }
missed_lines = executable_lines - covered_lines
coverage_percentage = executable_lines.positive? ? ((covered_lines.to_f / executable_lines) * 100).round(2) : 0
[relative_path, {
'lines' => executable_lines,
'hits' => covered_lines,
'misses' => missed_lines,
'coverage_ratio' => coverage_percentage
}]
end
combined_stats.merge(file_stats.to_h)
end
end
|