Sha256: ac1a2e135d972249bd97bb7c63627669d72b27dbf13ca7786a5d53d59473c3a3
Contents?: true
Size: 1.43 KB
Versions: 10
Compression:
Stored size: 1.43 KB
Contents
require 'singleton' require 'ostruct' module Mongo module BackgroundThread alias :start_without_tracking! :start! def start! start_without_tracking!.tap do |thread| BackgroundThreadRegistry.instance.register(self, thread) end end end end class BackgroundThreadRegistry include Singleton def initialize @lock = Mutex.new @records = [] end def register(object, thread) @lock.synchronize do @records << OpenStruct.new( thread: thread, object: object, example: $current_example, ) end end def verify_empty! @lock.synchronize do alive_thread_records = @records.select { |record| record.thread.alive? } if alive_thread_records.any? msg = "Live background threads after closing all clients:" alive_thread_records.each do |record| msg << "\n #{record.object}" if record.object.respond_to?(:options) msg << "\n with options: #{record.object.options}" end if record.example msg << "\n in #{record.example.id} #{record.example.full_description}" else msg << "\n not in an example" end end raise msg end @records.clear end end end RSpec.configure do |config| config.around do |example| $current_example = example begin example.run ensure $current_example = nil end end end
Version data entries
10 entries across 10 versions & 1 rubygems