1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

test/win32ole/test_win32ole_event.rb: wait longer

for unstable spec. I added r64963 but it couldn't rescue:
https://ci.appveyor.com/project/ruby/ruby/builds/19451743/job/hg0tyoxbacrrlnsr

Since #test_on_event is especially unstable,
https://ci.appveyor.com/project/ruby/ruby/builds/19337514/job/0wp2oe9dkr9gt1bi
https://ci.appveyor.com/project/ruby/ruby/builds/19451743/job/hg0tyoxbacrrlnsr
this commit lets it sleep longer as needed.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65030 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
k0kubun 2018-10-12 09:19:49 +00:00
parent 54e99c7cd8
commit 6c415d0163

View file

@ -63,12 +63,26 @@ if defined?(WIN32OLE_EVENT)
@sql = "SELECT * FROM __InstanceModificationEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_LocalTime'"
end
def message_loop
def message_loop(watch_ivar = nil)
if watch_ivar
orig_ivar = instance_variable_get(watch_ivar)
end
2.times do
WIN32OLE_EVENT.message_loop
sleep 1
end
sleep 1
if watch_ivar
# wait until event is proceeded
tries = 0
while tries < 5 && instance_variable_get(watch_ivar) == orig_ivar
seconds = 2 ** tries # sleep at most 31s in total
$stderr.puts "test_win32ole_event.rb: sleeping #{seconds}s until #{watch_ivar} is changed from #{orig_ivar.inspect}..."
sleep(seconds)
tries += 1
end
end
end
def default_handler(event, *args)
@ -109,7 +123,7 @@ if defined?(WIN32OLE_EVENT)
exec_notification_query_async
ev = WIN32OLE_EVENT.new(@sws, 'ISWbemSinkEvents')
ev.on_event {|*args| default_handler(*args)}
message_loop
message_loop(:@event)
assert_match(/OnObjectReady/, @event)
end