class RSpec::Core::Ordering::ConfigurationManager

@private Manages ordering configuration.

@note This is not intended to be used externally. Use

the APIs provided by `RSpec::Core::Configuration` instead.

Attributes

Public Class Methods

# File rspec-core/lib/rspec/core/ordering.rb, line 147
def initialize
  @ordering_registry = Registry.new(self)
  @seed = rand(0xFFFF)
  @seed_forced = false
  @order_forced = false
end

Public Instance Methods

# File rspec-core/lib/rspec/core/ordering.rb, line 190
def force(hash)
  if hash.key?(:seed)
    self.seed = hash[:seed]
    @seed_forced  = true
    @order_forced = true
  elsif hash.key?(:order)
    self.order = hash[:order]
    @order_forced = true
  end
end
# File rspec-core/lib/rspec/core/ordering.rb, line 164
def order=(type)
  order, seed = type.to_s.split(':')
  @seed = seed.to_i if seed

  ordering_name = if order.include?('rand')
                    :random
                  elsif order == 'defined'
                    :defined
                  elsif order == 'recently-modified'
                    :recently_modified
                  else
                    order.to_sym
                  end

  if ordering_name
    strategy =
      if ordering_registry.has_strategy?(ordering_name)
        ordering_registry.fetch(ordering_name)
      else
        Delayed.new(ordering_registry, ordering_name)
      end

    register_ordering(:global, strategy)
  end
end
# File rspec-core/lib/rspec/core/ordering.rb, line 201
def register_ordering(name, strategy=Custom.new(Proc.new { |l| yield l }))
  return if @order_forced && name == :global
  ordering_registry.register(name, strategy)
end
# File rspec-core/lib/rspec/core/ordering.rb, line 158
def seed=(seed)
  return if @seed_forced
  register_ordering(:global, ordering_registry.fetch(:random))
  @seed = seed.to_i
end
# File rspec-core/lib/rspec/core/ordering.rb, line 154
def seed_used?
  ordering_registry.used_random_seed?
end