[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]