ruby-changes:52818
From: k0kubun <ko1@a...>
Date: Fri, 12 Oct 2018 18:19:55 +0900 (JST)
Subject: [ruby-changes:52818] k0kubun:r65030 (trunk): test/win32ole/test_win32ole_event.rb: wait longer
k0kubun 2018-10-12 18:19:49 +0900 (Fri, 12 Oct 2018) New Revision: 65030 https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=65030 Log: 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. Modified files: trunk/test/win32ole/test_win32ole_event.rb Index: test/win32ole/test_win32ole_event.rb =================================================================== --- test/win32ole/test_win32ole_event.rb (revision 65029) +++ test/win32ole/test_win32ole_event.rb (revision 65030) @@ -63,12 +63,26 @@ if defined?(WIN32OLE_EVENT) https://github.com/ruby/ruby/blob/trunk/test/win32ole/test_win32ole_event.rb#L63 @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) https://github.com/ruby/ruby/blob/trunk/test/win32ole/test_win32ole_event.rb#L123 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 -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/