module SimpleCov::ExitCodes::ExitCodeHandling

def call(result, coverage_limits:)

def call(result, coverage_limits:)
  checks = coverage_checks(result, coverage_limits)
  failing_check = checks.find(&:failing?)
  if failing_check
    failing_check.report
    failing_check.exit_code
  else
    SimpleCov::ExitCodes::SUCCESS
  end
end

def coverage_checks(result, coverage_limits)

def coverage_checks(result, coverage_limits)
  [
    MinimumOverallCoverageCheck.new(result, coverage_limits.minimum_coverage),
    MinimumCoverageByFileCheck.new(result, coverage_limits.minimum_coverage_by_file),
    MaximumCoverageDropCheck.new(result, coverage_limits.maximum_coverage_drop)
  ]
end