class Sidekiq::Testing

def __local_test_mode

def __local_test_mode
  Thread.current[:__sidekiq_test_mode]
end

def __local_test_mode=(value)

def __local_test_mode=(value)
  Thread.current[:__sidekiq_test_mode] = value
end

def __set_test_mode(mode)

all threads. Calling with a block only affects the current Thread.
Calling without a block sets the global test mode, affecting
def __set_test_mode(mode)
  if block_given?
    # Reentrant testing modes will lead to a rat's nest of code which is
    # hard to reason about. You can set the testing mode once globally and
    # you can override that global setting once per-thread.
    raise TestModeAlreadySetError, "Nesting test modes is not supported" if __local_test_mode
    self.__local_test_mode = mode
    begin
      yield
    ensure
      self.__local_test_mode = nil
    end
  else
    self.__global_test_mode = mode
  end
end

def __test_mode

def __test_mode
  __local_test_mode || __global_test_mode
end

def disable!(&block)

def disable!(&block)
  __set_test_mode(:disable, &block)
end

def disabled?

def disabled?
  __test_mode == :disable
end

def enabled?

def enabled?
  __test_mode != :disable
end

def fake!(&block)

def fake!(&block)
  __set_test_mode(:fake, &block)
end

def fake?

def fake?
  __test_mode == :fake
end

def inline!(&block)

def inline!(&block)
  __set_test_mode(:inline, &block)
end

def inline?

def inline?
  __test_mode == :inline
end

def server_middleware

def server_middleware
  @server_chain ||= Middleware::Chain.new(Sidekiq.default_configuration)
  yield @server_chain if block_given?
  @server_chain
end