Module: Polyrun::Coverage::Reporting

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

Overview

Ready-to-use multi-format output (SimpleCov-compatible result blob), no extra gems. Pass formatter: for multi-formatter composition (Formatter::MultiFormatter, custom classes).

Constant Summary collapse

DEFAULT_FORMATS =
%w[json lcov cobertura console html].freeze
DEFAULT_MERGE_FORMAT_LIST =

Comma list for merge-coverage / run-shards –merge-coverage defaults (Codecov, Jenkins, HTML, etc.).

DEFAULT_FORMATS.join(",").freeze

Class Method Summary collapse

Class Method Details

.write(coverage_blob, output_dir:, basename: "polyrun-coverage", formats: DEFAULT_FORMATS, meta: {}, groups: nil, formatter: nil) ⇒ Object

Writes selected formats under output_dir using basename as file prefix (e.g. polyrun-coverage.json). When formatter is nil, builds Formatter.multi from formats (symbols or strings).



19
20
21
22
23
# File 'lib/polyrun/coverage/reporting.rb', line 19

def self.write(coverage_blob, output_dir:, basename: "polyrun-coverage", formats: DEFAULT_FORMATS, meta: {}, groups: nil, formatter: nil)
  fmt = formatter || Formatter.multi(*Array(formats).map(&:to_sym), output_dir: output_dir, basename: basename)
  result = Result.new(coverage_blob, meta: meta, groups: groups)
  fmt.format(result, output_dir: output_dir, basename: basename)
end

.write_from_json_file(json_path, **kwargs) ⇒ Object

Load a merged or raw JSON file from disk and write all requested formats.



26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/polyrun/coverage/reporting.rb', line 26

def self.write_from_json_file(json_path, **kwargs)
  text = File.read(json_path)
  data = JSON.parse(text)
  blob = Merge.extract_coverage_blob(data)
  meta = kwargs.delete(:meta) || data["meta"] || {}
  groups =
    if kwargs.key?(:groups)
      kwargs.delete(:groups)
    else
      data["groups"]
    end
  write(blob, meta: meta, groups: groups, **kwargs)
end