From 6c415d0163d6d02e891b668a9adbfb07872b0c20 Mon Sep 17 00:00:00 2001 From: k0kubun Date: Fri, 12 Oct 2018 09:19:49 +0000 Subject: 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 --- test/win32ole/test_win32ole_event.rb | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) (limited to 'test') diff --git a/test/win32ole/test_win32ole_event.rb b/test/win32ole/test_win32ole_event.rb index 82953c66ec..a45c12d9c4 100644 --- a/test/win32ole/test_win32ole_event.rb +++ b/test/win32ole/test_win32ole_event.rb @@ -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 -- cgit v1.2.3