summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authork0kubun <k0kubun@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-10-12 09:19:49 +0000
committerk0kubun <k0kubun@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-10-12 09:19:49 +0000
commit6c415d0163d6d02e891b668a9adbfb07872b0c20 (patch)
treebceba8969cd08a7f72a7fda49fb80f270edae633 /test
parent54e99c7cd85461f28750a54a449dde731ed32ebd (diff)
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
Diffstat (limited to 'test')
-rw-r--r--test/win32ole/test_win32ole_event.rb20
1 files changed, 17 insertions, 3 deletions
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