Module: Polyrun::Coverage::FileStatsReport

Defined in:
lib/polyrun/coverage/file_stats_report.rb

Overview

Per-file line coverage tables for CSV and Markdown exports.

Constant Summary collapse

HEADERS =
%w[path line_percent lines_covered lines_relevant].freeze

Class Method Summary collapse

Class Method Details

.emit_csv(coverage_blob) ⇒ Object



19
20
21
# File 'lib/polyrun/coverage/file_stats_report.rb', line 19

def emit_csv(coverage_blob)
  Export::Csv.generate(HEADERS, file_rows(coverage_blob))
end

.emit_markdown(coverage_blob, title: "Polyrun coverage report") ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
# File 'lib/polyrun/coverage/file_stats_report.rb', line 23

def emit_markdown(coverage_blob, title: "Polyrun coverage report")
  summary = Merge.console_summary(coverage_blob)
  summary_line = Merge.format_console_summary(summary).strip
  Export::Markdown.document(
    title,
    [
      {body: summary_line},
      {heading: "Per-file coverage", headers: HEADERS, rows: file_rows(coverage_blob)}
    ]
  )
end

.file_rows(coverage_blob) ⇒ Object



12
13
14
15
16
17
# File 'lib/polyrun/coverage/file_stats_report.rb', line 12

def file_rows(coverage_blob)
  coverage_blob.map do |path, file_entry|
    line_percent, lines_relevant, lines_covered = Merge.file_line_stats(file_entry)
    [path, format("%.2f", line_percent), lines_covered, lines_relevant]
  end.sort_by { |row| row[1].to_f }
end