module Net::SSH::Test::Extensions::IO::ClassMethods
def self.extended(obj) # :nodoc:
def self.extended(obj) # :nodoc: class << obj alias_method :select_for_real, :select alias_method :select, :select_for_test end end
def select_for_test(readers = nil, writers = nil, errors = nil, wait = nil)
writers, and errors arrays are either nil, or contain only objects
The testing version of ::IO.select. Assumes that all readers,
def select_for_test(readers = nil, writers = nil, errors = nil, wait = nil) return select_for_real(readers, writers, errors, wait) unless Net::SSH::Test::Extensions::IO.extension_enabled? ready_readers = Array(readers).select { |r| r.select_for_read? } ready_writers = Array(writers).select { |r| r.select_for_write? } ready_errors = Array(errors).select { |r| r.select_for_error? } return [ready_readers, ready_writers, ready_errors] if ready_readers.any? || ready_writers.any? || ready_errors.any? processed = 0 Array(readers).each do |reader| processed += 1 if reader.idle! end raise "no readers were ready for reading, and none had any incoming packets" if processed == 0 && wait != 0 [[], [], []] end