module RuboCop::Minitest::AssertOffense

def assert_correction(correction, loop: true)

def assert_correction(correction, loop: true)
  raise '`assert_correction` must follow `assert_offense`' unless @processed_source
  iteration = 0
  new_source = loop do
    iteration += 1
    corrected_source = @last_corrector.rewrite
    break corrected_source unless loop
    break corrected_source if @last_corrector.empty? || corrected_source == @processed_source.buffer.source
    if iteration > RuboCop::Runner::MAX_ITERATIONS
      raise RuboCop::Runner::InfiniteCorrectionLoop.new(@processed_source.path, [@offenses])
    end
    # Prepare for next loop
    @processed_source = parse_source!(corrected_source, @processed_source.path)
    _investigate(cop, @processed_source)
  end
  assert_equal(correction, new_source)
end