class SimpleCov::ExitCodes::MaximumCoverageDropCheck

def coverage_diff

def coverage_diff
  raise "Trying to access coverage_diff although there is no last run" unless last_run
  @coverage_diff ||= last_run[:result][:covered_percent] - covered_percent
end

def covered_percent

def covered_percent
  SimpleCov.round_coverage(result.covered_percent)
end

def exit_code

def exit_code
  SimpleCov::ExitCodes::MAXIMUM_COVERAGE_DROP
end

def failing?

def failing?
  return false unless maximum_coverage_drop && last_run
  coverage_diff > maximum_coverage_drop
end

def initialize(result, maximum_coverage_drop)

def initialize(result, maximum_coverage_drop)
  @result = result
  @maximum_coverage_drop = maximum_coverage_drop
end

def last_run

def last_run
  return @last_run if defined?(@last_run)
  @last_run = SimpleCov::LastRun.read
end

def report

def report
  $stderr.printf(
    "Coverage has dropped by %<drop_percent>.2f%% since the last time (maximum allowed: %<max_drop>.2f%%).\n",
    drop_percent: coverage_diff,
    max_drop: maximum_coverage_drop
  )
end