aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--test/win32ole/test_win32ole_event.rb18
1 files changed, 17 insertions, 1 deletions
diff --git a/test/win32ole/test_win32ole_event.rb b/test/win32ole/test_win32ole_event.rb
index e23097e2e1..a1546da4a2 100644
--- a/test/win32ole/test_win32ole_event.rb
+++ b/test/win32ole/test_win32ole_event.rb
@@ -117,7 +117,10 @@ if defined?(WIN32OLE_EVENT)
message_loop
GC.start
end
- assert_match(/OnObjectReady/, @event)
+
+ # @event randomly becomes "OnCompleted" here. Try to wait until it matches.
+ # https://ci.appveyor.com/project/ruby/ruby/builds/19963142/job/8gaxepksa0i3b998
+ assert_match_with_retries(/OnObjectReady/, :@event)
end
def test_on_event
@@ -147,6 +150,19 @@ if defined?(WIN32OLE_EVENT)
end
raise
end
+
+ def assert_match_with_retries(regexp, ivarname)
+ ivar = instance_variable_get(ivarname)
+
+ tries = 0
+ while tries < 5 && !ivar.match(regexp)
+ $stderr.puts "test_win32ole_event.rb: retrying until #{ivarname} matches #{regexp} (tries: #{tries})..."
+ sleep(2 ** tries) # sleep at most 31s in total
+ ivar = instance_variable_get(ivarname)
+ end
+
+ assert_match(regexp, ivar)
+ end
end
end