Simplify and refactor uhwm_wait_output helper
This commit is contained in:
parent
e899240d70
commit
078254ae6d
@ -29,5 +29,5 @@ Around '@other_wm_running' do |_, block|
|
|||||||
end
|
end
|
||||||
|
|
||||||
if ENV.key? 'TRAVIS'
|
if ENV.key? 'TRAVIS'
|
||||||
ENV['UHWMTEST_OUTPUT_TIMEOUT'] = 8.to_s
|
ENV['UHWMTEST_TIMEOUT'] = 8.to_s
|
||||||
end
|
end
|
||||||
|
@ -23,25 +23,17 @@ module Uh
|
|||||||
end
|
end
|
||||||
|
|
||||||
def uhwm_wait_output message
|
def uhwm_wait_output message
|
||||||
timeout = ENV.key?('UHWMTEST_OUTPUT_TIMEOUT') ?
|
output = -> { @process.stdout + @process.stderr }
|
||||||
ENV['UHWMTEST_OUTPUT_TIMEOUT'].to_i :
|
timeout_until do
|
||||||
1
|
case message
|
||||||
Timeout.timeout(timeout) do
|
when Regexp then output.call =~ message
|
||||||
loop do
|
|
||||||
break if case message
|
|
||||||
when Regexp then @process.stdout + @process.stderr =~ message
|
|
||||||
when String then assert_partial_output_interactive message
|
when String then assert_partial_output_interactive message
|
||||||
end
|
end
|
||||||
sleep 0.1
|
|
||||||
end
|
end
|
||||||
end
|
rescue TimeoutError => e
|
||||||
rescue Timeout::Error
|
|
||||||
output = (@process.stdout + @process.stderr).lines
|
|
||||||
.map { |e| " #{e}" }
|
|
||||||
.join
|
|
||||||
fail [
|
fail [
|
||||||
"expected `#{message}' not seen after #{timeout} seconds in:",
|
"expected `#{message}' not seen after #{e.timeout} seconds in:",
|
||||||
" ```\n#{output} ```"
|
" ```\n#{output.call.lines.map { |e| " #{e}" }.join} ```"
|
||||||
].join "\n"
|
].join "\n"
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -93,6 +85,30 @@ module Uh
|
|||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
|
def timeout_until
|
||||||
|
timeout = ENV.key?('UHWMTEST_TIMEOUT') ?
|
||||||
|
ENV['UHWMTEST_TIMEOUT'].to_i :
|
||||||
|
1
|
||||||
|
Timeout.timeout(timeout) do
|
||||||
|
loop do
|
||||||
|
break if yield
|
||||||
|
sleep 0.1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
rescue Timeout::Error
|
||||||
|
fail TimeoutError.new('execution expired', timeout)
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
class TimeoutError < ::StandardError
|
||||||
|
attr_reader :timeout
|
||||||
|
|
||||||
|
def initialize message, timeout
|
||||||
|
super message
|
||||||
|
@timeout = timeout
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
class XClient
|
class XClient
|
||||||
attr_reader :name
|
attr_reader :name
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user