Module: Minitest::Retry::ClassMethods

Defined in:
lib/minitest/retry.rb

Instance Method Summary collapse

Instance Method Details

#run_one_method(klass, method_name) ⇒ Object



82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# File 'lib/minitest/retry.rb', line 82

def run_one_method(klass, method_name)
  result = super(klass, method_name)

  klass_method_name = "#{klass.name}##{method_name}"
  return result unless Minitest::Retry.failure_to_retry?(result.failures, klass_method_name, klass)
  if !result.skipped?
    Minitest::Retry.failure_callback.call(klass, method_name, result) if Minitest::Retry.failure_callback
    Minitest::Retry.retry_count.times do |count|
      Minitest::Retry.retry_callback.call(klass, method_name, count + 1, result) if Minitest::Retry.retry_callback
      if Minitest::Retry.verbose && Minitest::Retry.io
        msg = "[MinitestRetry] retry '%s' count: %s,  msg: %s\n" %
          [method_name, count + 1, result.failures.map(&:message).join(",")]
        Minitest::Retry.io.puts(msg)
      end

      result = super(klass, method_name)
      break if result.failures.empty?
    end

    if Minitest::Retry.consistent_failure_callback && !result.failures.empty?
      Minitest::Retry.consistent_failure_callback.call(klass, method_name, result)
    end
  end
  result
end