2017-08-15 01:08:09 +08:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2017-07-25 14:01:33 +08:00
|
|
|
begin
|
|
|
|
require "pty"
|
|
|
|
rescue LoadError
|
|
|
|
end
|
|
|
|
|
|
|
|
module ConsoleHelpers
|
|
|
|
def assert_output(expected, io, timeout = 10)
|
|
|
|
timeout = Time.now + timeout
|
|
|
|
|
2018-05-17 16:32:27 +08:00
|
|
|
output = +""
|
2017-07-25 14:01:33 +08:00
|
|
|
until output.include?(expected) || Time.now > timeout
|
|
|
|
if IO.select([io], [], [], 0.1)
|
|
|
|
output << io.read(1)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
assert_includes output, expected, "#{expected.inspect} expected, but got:\n\n#{output}"
|
|
|
|
end
|
2022-09-16 13:45:36 +08:00
|
|
|
end
|
2017-07-25 14:01:33 +08:00
|
|
|
|
2022-09-16 13:45:36 +08:00
|
|
|
def available_pty?
|
|
|
|
defined?(PTY) && PTY.respond_to?(:open)
|
2017-07-25 14:01:33 +08:00
|
|
|
end
|