Class: RSpec::Rewind::RetryCountResolver

Inherits:
Object
  • Object
show all
Defined in:
lib/rspec/rewind/retry_count_resolver.rb

Constant Summary collapse

ENV_RETRIES_KEY =
'RSPEC_REWIND_RETRIES'
ENV_DISABLE_KEY =
'RSPEC_REWIND_DISABLE'

Instance Method Summary collapse

Constructor Details

#initialize(configuration:, metadata:) ⇒ RetryCountResolver

Returns a new instance of RetryCountResolver.



9
10
11
12
# File 'lib/rspec/rewind/retry_count_resolver.rb', line 9

def initialize(configuration:, metadata:)
  @configuration = configuration
  @metadata =  || {}
end

Instance Method Details

#resolve(explicit_retries:) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/rspec/rewind/retry_count_resolver.rb', line 14

def resolve(explicit_retries:)
  return 0 if normalize_retry_override(explicit_retries) == 0 # rubocop:disable Style/NumericPredicate
  return 0 if env_disabled?

  env_retries = env_retries_value
  return capped(parse_non_negative_integer(env_retries, source: ENV_RETRIES_KEY)) if env_retries

  configured = first_non_nil(
    normalize_retry_override(explicit_retries),
    normalize_retry_override(@metadata[:rewind]),
    @configuration.default_retries
  )

  capped(parse_non_negative_integer(configured, source: 'retries'))
end