0.21
No release in over a year
re-run the test when the test fails
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Development

>= 0

Runtime

>= 5.0
 Project Readme

Minitest::Retry

Re-run the test when the test fails.

Gem Version

Installation

Add this line to your application's Gemfile:

gem 'minitest-retry'

And then execute:

$ bundle

Or install it yourself as:

$ gem install minitest-retry

Usage

In your test_helper.rb file, add the following lines:

require 'minitest/retry'
Minitest::Retry.use!

Options can be specified to use! method. Can specify options are as follows:

Minitest::Retry.use!(
  retry_count:  3,         # The number of times to retry. The default is 3.
  verbose: true,           # Whether or not to display the message at the time of retry. The default is true.
  io: $stdout,             # Display destination of retry when the message. The default is stdout.
  exceptions_to_retry: [], # List of exceptions that will trigger a retry (when empty, all exceptions will).
  methods_to_retry:    [], # List of methods that will trigger a retry (when empty, all methods will).
  classes_to_retry:    [], # List of classes that will trigger a retry (when empty, all classes will).
  methods_to_skip:     [], # List of methods that will skip a retry (when empty, all methods will retry).
  exceptions_to_skip:  []  # List of exceptions that will skip a retry (when empty, all exceptions will retry).
)

Callbacks

The on_failure callback is executed each time a test fails:

Minitest::Retry.on_failure do |klass, test_name, result|
  # code omitted
end

The on_consistent_failure callback is executed when a test consistently fails:

Minitest::Retry.on_consistent_failure do |klass, test_name, result|
  # code omitted
end

The on_retry callback is executed each time a test is retried:

Minitest::Retry.on_retry do |klass, test_name, retry_count, result|
  # code omitted
end

Example

Minitest::Retry.use!

class Minitest::RetryTest < Minitest::Test
  def test_fail
    assert false, 'test fail'
  end
end
# Running:

[MinitestRetry] retry 'test_fail' count: 1,  msg: test fail
[MinitestRetry] retry 'test_fail' count: 2,  msg: test fail
[MinitestRetry] retry 'test_fail' count: 3,  msg: test fail
F

Finished in 0.002479s, 403.4698 runs/s, 403.4698 assertions/s.

  1) Failure:
Minitest::RetryTest#test_fail [test/minitest/sample_test.rb:6]:
test fail

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/y-yagi/minitest-retry.

License

The gem is available as open source under the terms of the MIT License.