diff options
-rw-r--r-- | spec/ruby/library/win32ole/win32ole/shared/ole_method.rb | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/spec/ruby/library/win32ole/win32ole/shared/ole_method.rb b/spec/ruby/library/win32ole/win32ole/shared/ole_method.rb index 33268e0aa2..9fdb5f2055 100644 --- a/spec/ruby/library/win32ole/win32ole/shared/ole_method.rb +++ b/spec/ruby/library/win32ole/win32ole/shared/ole_method.rb @@ -5,7 +5,20 @@ platform_is :windows do describe :win32ole_ole_method, shared: true do before :each do - @ie = WIN32OLESpecs.new_ole('InternetExplorer.Application') + # This part is unstable, so retrying 3 times. + tries = 0 + begin + @ie = WIN32OLESpecs.new_ole('InternetExplorer.Application') + rescue WIN32OLERuntimeError => e + # WIN32OLERuntimeError: failed to create WIN32OLE object from `InternetExplorer.Application' + # HRESULT error code:0x800704a6 + # A system shutdown has already been scheduled. + if tries < 3 + tries += 1 + $stderr.puts "win32ole_ole_method retry (#{tries}): #{e.class}: #{e.message}" + retry + end + end end after :each do |