Module: CovLoupe::CoverageReporter
- Defined in:
- lib/cov_loupe/coverage/coverage_reporter.rb
Overview
Reports files with coverage below a specified threshold. Intended for use in spec_helper.rb (via SimpleCov.at_exit hook) to display the worst-covered files after a test run.
This is a convenience wrapper around CoverageModel — it does not add any data processing beyond what the model provides.
Class Method Summary collapse
Class Method Details
.report(threshold: 80, count: 5, model: nil, root: nil, resultset: nil) ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/cov_loupe/coverage/coverage_reporter.rb', line 35 module_function def report(threshold: 80, count: 5, model: nil, root: nil, resultset: nil) # Determine default root from SimpleCov if available default_root = defined?(SimpleCov) ? SimpleCov.root : '.' # Determine default resultset from SimpleCov if available default_resultset = if defined?(SimpleCov) File.join(SimpleCov.root, SimpleCov.coverage_dir, '.resultset.json') end model ||= CoverageModel.new( root: root || default_root, resultset: resultset || default_resultset ) list_result = model.list(sort_order: :ascending) file_list = list_result['files'] .select { |f| f['percentage'] && f['percentage'] < threshold } .first(count) file_list = model.relativize(file_list) return nil if file_list.empty? lines = ["\nLowest coverage files (< #{threshold}%):"] file_list.each do |f| label = f['file'] if StaleStatus.stale?(f['stale']) label = "#{label} (stale: #{f['stale']})" end lines << format(' %5.1f%% %s', f['percentage'], label) end lines.join("\n") end |