rspec-retry_ex 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 43e3fdbe9dd0570e23967b2e9d89d6c85eb04156012e9df200022c3928a9c17d
4
- data.tar.gz: 25cf0b2a6efa98e0dda7af401ac1e79fbd594892f9497d393d7d2c05f7d3c951
3
+ metadata.gz: 3def93de8ee015ace346b71f85e60fcb55a81221e6c68b4a041155686f3ed6e7
4
+ data.tar.gz: 578ccd8221b246ede71243aea35a8fdb4940f773000d03278ced66180c075847
5
5
  SHA512:
6
- metadata.gz: 656cb1dc53698862773b27e2c2818080fd827ad89f435bd1d62503d3b168122f4cb519c8bdfce918e4ef28b49b43c3f3be1420eae1fb3d91221b32673b17e216
7
- data.tar.gz: fbb00a7071d39d43417d691c995428c0f33b3343eeab6dfdc867820271f61ae52c484e92f90eb3259c6b218f749f1083e7909345bc0baaafd8ec43991362e46a
6
+ metadata.gz: 1f19a0d5b8a8908147a1d78442ae1466a25cb954bced5b723fbedc0a996065ad89f71f48d6599929a971d978a88970e8c3a50aadfa6d113f4d3deb30d8d98dde
7
+ data.tar.gz: 3fa5052e60f01aeb9999d8c84ba71cc82c426cd5f85602b6cae9a814a7b02b7d32bac2eb71a47b602b6fa3f2d277bc2ab671998198f996b5e9156ef54aef013c
data/.rubocop.yml CHANGED
@@ -2,6 +2,9 @@ AllCops:
2
2
  Exclude:
3
3
  - rspec-retry_ex.gemspec
4
4
  - tmp/**/*
5
+ - Rakefile
6
+ - Gemfile
7
+ - spec/spec_helper.rb
5
8
 
6
9
  Metrics/LineLength:
7
10
  Max: 100
@@ -17,3 +20,15 @@ Layout/IndentationConsistency:
17
20
 
18
21
  Metrics/CyclomaticComplexity:
19
22
  Max: 10
23
+
24
+ Style/TrailingCommaInArrayLiteral:
25
+ EnforcedStyleForMultiline: comma
26
+
27
+ Style/TrailingCommaInHashLiteral:
28
+ EnforcedStyleForMultiline: comma
29
+
30
+ Style/FrozenStringLiteralComment:
31
+ Enabled: false
32
+
33
+ Style/NumericPredicate:
34
+ Enabled: false
data/.travis.yml CHANGED
@@ -2,9 +2,9 @@ sudo: false
2
2
  language: ruby
3
3
  rvm:
4
4
  - 2.2.10
5
- - 2.3.7
6
- - 2.4.4
7
- - 2.5.1
5
+ - 2.3.8
6
+ - 2.4.5
7
+ - 2.5.3
8
8
  gemfile:
9
9
  - gemfiles/rspec_33x.gemfile
10
10
  - gemfiles/rspec_34x.gemfile
@@ -16,14 +16,15 @@ branches:
16
16
  only:
17
17
  - master
18
18
  before_install:
19
- - gem update --system --no-doc
20
- - gem install bundler
19
+ - gem uninstall -v '>= 2' -i $(rvm gemdir)@global -ax bundler || true
20
+ - gem install bundler -v '< 2'
21
21
  before_script:
22
22
  - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
23
23
  - chmod +x ./cc-test-reporter
24
24
  - ./cc-test-reporter before-build
25
25
  script:
26
26
  - bundle exec rspec spec
27
+ - rubocop
27
28
  after_script:
28
29
  - |
29
30
  if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then
data/README.md CHANGED
@@ -66,6 +66,37 @@ scenario "Some scenario" do
66
66
  end
67
67
  ```
68
68
 
69
+ ## Configuration
70
+
71
+ Errors to retry is customizable.
72
+
73
+ Only `RSpec::Expectations::ExpectationNotMetError` is retried by default.
74
+
75
+ Here is an example of configuration in `spec_helper.rb` or `rails_helper.rb`.
76
+
77
+ ```ruby
78
+ RSpec.configure do |config|
79
+ config.rspec_retry_ex_retry_errors = [
80
+ RSpec::Expectations::ExpectationNotMetError,
81
+ Selenium::WebDriver::Error::WebDriverError
82
+ ]
83
+ end
84
+ ```
85
+
86
+ Or options for `retry_ex`.
87
+
88
+ ```ruby
89
+ scenario "Some scenario" do
90
+ visit "/some_page"
91
+
92
+ fill_in "postcode", with: "1300012"
93
+ retry_ex(count: 3, retry_errors: [Selenium::WebDriver::Error::WebDriverError]) do
94
+ expect(page).to have_select("ward", selected: "Sumida")
95
+ end
96
+ end
97
+
98
+ ```
99
+
69
100
  ## Contributing
70
101
  You should follow the steps below:
71
102
 
@@ -2,10 +2,11 @@ module RSpec
2
2
  module RetryEx
3
3
  class RetryHandler
4
4
  def initialize(**options)
5
- @count = options[:count] || 1
6
- @before_retry = options[:before_retry]
7
- @after_retry = options[:after_retry]
8
- @counter = 0
5
+ @count = options[:count] || 1
6
+ @before_retry = options[:before_retry]
7
+ @after_retry = options[:after_retry]
8
+ @counter = 0
9
+ @retry_errors = initialize_retry_errors(options[:retry_errors])
9
10
  end
10
11
 
11
12
  def run
@@ -13,7 +14,7 @@ module RSpec
13
14
  @counter += 1
14
15
  yield
15
16
  success_message
16
- rescue RSpec::Expectations::ExpectationNotMetError => e
17
+ rescue *@retry_errors => e
17
18
  call_around_retry(after_retry)
18
19
  failure_message(e, count)
19
20
  retry if @counter < count
@@ -26,11 +27,13 @@ module RSpec
26
27
 
27
28
  def call_around_retry(around_retry)
28
29
  return if around_retry.nil?
30
+
29
31
  around_retry.call
30
32
  end
31
33
 
32
34
  def success_message
33
35
  return unless @counter > 1
36
+
34
37
  message = "Congratulations! #{ordinalize(@counter)} try has succeeded!.\n"
35
38
  RSpec.configuration.reporter.message(message)
36
39
  end
@@ -61,6 +64,16 @@ module RSpec
61
64
  end
62
65
  end
63
66
  # rubocop:enable Metrics/MethodLength
67
+
68
+ def initialize_retry_errors(retry_errors)
69
+ if retry_errors.is_a?(Array) && !retry_errors.empty?
70
+ retry_errors
71
+ elsif !RSpec.configuration.rspec_retry_ex_retry_errors.empty?
72
+ RSpec.configuration.rspec_retry_ex_retry_errors
73
+ else
74
+ [RSpec::Expectations::ExpectationNotMetError]
75
+ end
76
+ end
64
77
  end
65
78
  end
66
79
  end
@@ -1,5 +1,5 @@
1
1
  module RSpec
2
2
  module RetryEx
3
- VERSION = "0.1.0".freeze
3
+ VERSION = "0.2.0".freeze
4
4
  end
5
5
  end
@@ -2,6 +2,12 @@ require "rspec/retry_ex/retry_handler"
2
2
 
3
3
  module RSpec
4
4
  module RetryEx
5
+ def self.setup
6
+ RSpec.configure do |config|
7
+ config.add_setting :rspec_retry_ex_retry_errors, default: []
8
+ end
9
+ end
10
+
5
11
  def retry_ex(**options)
6
12
  handler = RetryHandler.new(options)
7
13
  handler.run do
@@ -10,3 +16,5 @@ module RSpec
10
16
  end
11
17
  end
12
18
  end
19
+
20
+ RSpec::RetryEx.setup
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-retry_ex
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - yuyasat
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-09-02 00:00:00.000000000 Z
11
+ date: 2019-06-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec-core
@@ -171,8 +171,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
171
171
  - !ruby/object:Gem::Version
172
172
  version: '0'
173
173
  requirements: []
174
- rubyforge_project:
175
- rubygems_version: 2.7.6
174
+ rubygems_version: 3.0.3
176
175
  signing_key:
177
176
  specification_version: 4
178
177
  summary: retry rspec one target `expect`