Extract user acceptance test helpers in a module
This commit is contained in:
69
lib/uh/wm/testing/acceptance_helpers.rb
Normal file
69
lib/uh/wm/testing/acceptance_helpers.rb
Normal file
@@ -0,0 +1,69 @@
|
||||
module Uh
|
||||
module WM
|
||||
module Testing
|
||||
module AcceptanceHelpers
|
||||
def uhwm_run options = '-v'
|
||||
command = %w[uhwm]
|
||||
command << options if options
|
||||
@interactive = @process = run command.join ' '
|
||||
end
|
||||
|
||||
def uhwm_ensure_stop
|
||||
@process and @process.terminate
|
||||
end
|
||||
|
||||
def uhwm_pid
|
||||
@process.pid
|
||||
end
|
||||
|
||||
def uhwm_output
|
||||
@process.stdout
|
||||
end
|
||||
|
||||
def uhwm_wait_output message, timeout: 1
|
||||
Timeout.timeout(timeout) do
|
||||
loop do
|
||||
break if case message
|
||||
when Regexp then @process.stdout + @process.stderr =~ message
|
||||
when String then assert_partial_output_interactive message
|
||||
end
|
||||
sleep 0.1
|
||||
end
|
||||
end
|
||||
rescue Timeout::Error
|
||||
fail [
|
||||
"expected `#{message}' not seen after #{timeout} seconds in:",
|
||||
" ```\n #{@process.stdout + @process.stderr} ```"
|
||||
].join "\n"
|
||||
end
|
||||
|
||||
def uhwm_run_wait_ready
|
||||
uhwm_run
|
||||
uhwm_wait_output 'Connected to'
|
||||
end
|
||||
|
||||
def with_other_wm
|
||||
@other_wm = ChildProcess.build('twm').tap { |o| o.start }
|
||||
@other_wm.stop
|
||||
end
|
||||
|
||||
def other_wm
|
||||
@other_wm
|
||||
end
|
||||
|
||||
def x_key key
|
||||
fail "cannot simulate X key `#{key}'" unless system "xdotool key #{key}"
|
||||
end
|
||||
|
||||
def x_socket_check pid
|
||||
case RbConfig::CONFIG['host_os']
|
||||
when /linux/
|
||||
`netstat -xp 2> /dev/null`.lines.grep /\s+#{pid}\/ruby/
|
||||
else
|
||||
`sockstat -u`.lines.grep /\s+ruby.+\s+#{pid}/
|
||||
end.any?
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
Reference in New Issue
Block a user