compass/test/io_helper.rb

37 lines
768 B
Ruby

module Compass
module IoHelper
def capture_output
real_stdout, $stdout = $stdout, StringIO.new
yield
$stdout.string
ensure
$stdout = real_stdout
end
def capture_warning
real_stderr, $stderr = $stderr, StringIO.new
yield
$stderr.string
ensure
$stderr = real_stderr
end
def capture_pipe(io, options = {})
options[:wait] = 0.25
options[:timeout] = 1.0
output = ""
eof_at = nil
while !eof_at || (Time.now - eof_at < options[:wait])
if io.eof?
eof_at ||= Time.now
sleep 0.1
else
eof_at = nil
timeout(options[:timeout]) { output << io.readpartial(1024) }
end
end
output
end
end
end