lib/sidekiq/testing.rb in sidekiq-7.1.5 vs lib/sidekiq/testing.rb in sidekiq-7.1.6
- old
+ new
@@ -4,23 +4,36 @@
require "sidekiq"
module Sidekiq
class Testing
class << self
- attr_accessor :__test_mode
+ attr_accessor :__global_test_mode
+ # Calling without a block sets the global test mode, affecting
+ # all threads. Calling with a block only affects the current Thread.
def __set_test_mode(mode)
if block_given?
- current_mode = __test_mode
begin
- self.__test_mode = mode
+ self.__local_test_mode = mode
yield
ensure
- self.__test_mode = current_mode
+ self.__local_test_mode = nil
end
else
- self.__test_mode = mode
+ self.__global_test_mode = mode
end
+ end
+
+ def __test_mode
+ __local_test_mode || __global_test_mode
+ end
+
+ def __local_test_mode
+ Thread.current[:__sidekiq_test_mode]
+ end
+
+ def __local_test_mode=(value)
+ Thread.current[:__sidekiq_test_mode] = value
end
def disable!(&block)
__set_test_mode(:disable, &block)
end