From 090e2130d36b9f5a9b02ead3e3a5351e405dae7d Mon Sep 17 00:00:00 2001 From: k0kubun Date: Sat, 27 Oct 2018 13:57:23 +0000 Subject: revert r65389 and r64993 and move retry logic to internal method git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65391 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- spec/ruby/library/win32ole/fixtures/classes.rb | 11 +++++++---- .../library/win32ole/win32ole/ole_func_methods_spec.rb | 15 +-------------- spec/ruby/library/win32ole/win32ole/shared/ole_method.rb | 15 +-------------- 3 files changed, 9 insertions(+), 32 deletions(-) (limited to 'spec') diff --git a/spec/ruby/library/win32ole/fixtures/classes.rb b/spec/ruby/library/win32ole/fixtures/classes.rb index 830b1be0b5..cde47f7580 100644 --- a/spec/ruby/library/win32ole/fixtures/classes.rb +++ b/spec/ruby/library/win32ole/fixtures/classes.rb @@ -1,14 +1,17 @@ module WIN32OLESpecs def self.new_ole(name) - retried = false + tries = 0 begin WIN32OLE.new(name) rescue WIN32OLERuntimeError => e - unless retried - retried = true + if tries < 3 + tries += 1 + $stderr.puts "WIN32OLESpecs#new_ole retry (#{tries}): #{e.class}: #{e.message}" + sleep(2 ** tries) retry + else + raise end - raise e end end end diff --git a/spec/ruby/library/win32ole/win32ole/ole_func_methods_spec.rb b/spec/ruby/library/win32ole/win32ole/ole_func_methods_spec.rb index 8b5b9c13ed..8a510519f2 100644 --- a/spec/ruby/library/win32ole/win32ole/ole_func_methods_spec.rb +++ b/spec/ruby/library/win32ole/win32ole/ole_func_methods_spec.rb @@ -5,20 +5,7 @@ platform_is :windows do describe "WIN32OLE#ole_func_methods" do before :each do - # 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_func_methods retry (#{tries}): #{e.class}: #{e.message}" - retry - end - end + @ie = WIN32OLESpecs.new_ole('InternetExplorer.Application') end after :each do diff --git a/spec/ruby/library/win32ole/win32ole/shared/ole_method.rb b/spec/ruby/library/win32ole/win32ole/shared/ole_method.rb index 9fdb5f2055..33268e0aa2 100644 --- a/spec/ruby/library/win32ole/win32ole/shared/ole_method.rb +++ b/spec/ruby/library/win32ole/win32ole/shared/ole_method.rb @@ -5,20 +5,7 @@ platform_is :windows do describe :win32ole_ole_method, shared: true do before :each do - # 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 + @ie = WIN32OLESpecs.new_ole('InternetExplorer.Application') end after :each do -- cgit v1.2.3