module RSpec::Bash::FD

Public Class Methods

noise?(error) click to toggle source
# File lib/rspec/bash/fd.rb, line 36
def self.noise?(error)
  error.to_s == "stream closed" || error.to_s == "closed stream"
end
poll(fd, throttle: 25 / 1000) { |fd| ... } click to toggle source
# File lib/rspec/bash/fd.rb, line 16
def self.poll(fd, throttle: 25 / 1000, &block)
  while readable?(fd) do
    begin
      yield fd
      sleep throttle if throttle > 0
    rescue IO::WaitReadable
      IO.select([ fd ])
      retry
    rescue IOError => e
      if noise? e
        break
      else
        throw e
      end
    rescue EOFError
      break
    end
  end
end
readable?(fd) click to toggle source
# File lib/rspec/bash/fd.rb, line 4
def self.readable?(fd)
  begin
    !fd.closed? && !fd.eof?
  rescue IOError => e
    if noise? e
      return false
    else
      throw e
    end
  end
end