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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
# File 'lib/fast_ci/simple_cov/reporting.rb', line 4
def self.included base
base.instance_eval do
unless (ENV['FAST_CI_SECRET_KEY'] || '').empty?
def write_last_run(result)
file_coverage = {}
result.files.each do |file|
missed_lines = file.missed_lines.map { |missed| missed.line_number }.sort
file_coverage[file.filename.gsub(root, '.')] = {
coverage: file.coverage_statistics[:line].percent,
missed_line_count: missed_lines.count,
missed_lines: ::FastCI::SimpleCov::Reporting.join_consecutive_numbers(missed_lines),
covered_lines_count: file.covered_lines.map { |missed| missed.line_number }.count
}
end
folder_coverage = {}
file_coverage.each do |path, data|
parent_folders = File.dirname(path).split('/').drop(1)
(0..(parent_folders.size - 1)).each do |path_index|
path = './' + parent_folders[0..path_index].join('/')
folder_coverage[path] ||= {}
folder_coverage[path][:missed_line_count] =
(folder_coverage.dig(path, :missed_line_count) || 0) + data[:missed_line_count]
folder_coverage[path][:covered_line_count] =
(folder_coverage.dig(path, :covered_line_count) || 0) + data[:covered_lines_count]
end
end
folder_coverage.keys.each do |path|
folder_coverage[path][:coverage] =
(100 - folder_coverage[path][:missed_line_count] * 100.0 / (folder_coverage[path][:covered_line_count] + folder_coverage[path][:missed_line_count])).round(2)
end
results = {
file_coverage: file_coverage,
folder_coverage: folder_coverage,
coverage: result.coverage_statistics[:line].percent.round(2)
}
FastCI.report_simplecov(results.to_json)
end
end
end
end
|