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:
parent
54e99c7cd8
commit
6c415d0163
1 changed files with 17 additions and 3 deletions
|
@ -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
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue