Sha256: c7e0b4763b429d54b30a0d91366a867d6e4d9ee05fd558184d45c2be4ac5eee8

Contents?: true

Size: 854 Bytes

Versions: 2

Compression:

Stored size: 854 Bytes

Contents

module Specs
  class << self
    def reset_class_variables(description)
      # build uuid from example ending (most unique)
      uuid_prefix = description[-[description.size, 20].min..-1]
      reset_uuid(uuid_prefix)

      reset_probe(Queue.new)
      yield
      reset_probe(nil)
    end

    def reset_probe(value)
      # !!! DO NOT INTRODUCE ADDITIONAL GLOBAL VARIABLES !!!
      # rubocop:disable Style/GlobalVars
      $CELLULOID_MONITORING = !value.nil?
      # rubocop:enable Style/GlobalVars

      replace_const(Celluloid::Probe, :EVENTS_BUFFER, value)
    end

    def reset_uuid(uuid_prefix)
      replace_const(Celluloid::Internals::UUID, :PREFIX, uuid_prefix)
    end

    def replace_const(klass, const, value)
      klass.send(:remove_const, const) if klass.const_defined?(const)
      klass.const_set(const, value)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
celluloid-0.18.0 spec/support/reset_class_variables.rb
celluloid-0.18.0.pre2 spec/support/reset_class_variables.rb