class SimpleCov::ExitCodes::MinimumCoverageByFileCheck

Attributes

minimum_coverage_by_file[R]
result[R]

Public Class Methods

new(result, minimum_coverage_by_file) click to toggle source
# File lib/simplecov/exit_codes/minimum_coverage_by_file_check.rb, line 5
def initialize(result, minimum_coverage_by_file)
  @result = result
  @minimum_coverage_by_file = minimum_coverage_by_file
end

Public Instance Methods

exit_code() click to toggle source
# File lib/simplecov/exit_codes/minimum_coverage_by_file_check.rb, line 25
def exit_code
  SimpleCov::ExitCodes::MINIMUM_COVERAGE
end
failing?() click to toggle source
# File lib/simplecov/exit_codes/minimum_coverage_by_file_check.rb, line 10
def failing?
  minimum_violations.any?
end
report() click to toggle source
# File lib/simplecov/exit_codes/minimum_coverage_by_file_check.rb, line 14
def report
  minimum_violations.each do |violation|
    $stderr.printf(
      "%<criterion>s coverage by file (%<covered>.2f%%) is below the expected minimum coverage (%<minimum_coverage>.2f%%).\n",
      covered: SimpleCov.round_coverage(violation.fetch(:actual)),
      minimum_coverage: violation.fetch(:minimum_expected),
      criterion: violation.fetch(:criterion).capitalize
    )
  end
end

Private Instance Methods

compute_minimum_coverage_data() click to toggle source
# File lib/simplecov/exit_codes/minimum_coverage_by_file_check.rb, line 40
def compute_minimum_coverage_data
  minimum_coverage_by_file.flat_map do |criterion, expected_percent|
    result.coverage_statistics_by_file.fetch(criterion).map do |actual_coverage|
      {
        criterion: criterion,
        minimum_expected: expected_percent,
        actual: SimpleCov.round_coverage(actual_coverage.percent)
      }
    end
  end
end
minimum_violations() click to toggle source
# File lib/simplecov/exit_codes/minimum_coverage_by_file_check.rb, line 33
def minimum_violations
  @minimum_violations ||=
    compute_minimum_coverage_data.select do |achieved|
      achieved.fetch(:actual) < achieved.fetch(:minimum_expected)
    end
end