spec_helper: fix Timeout::Error/SystemExit handling.
These need to be manually caught and set otherwise they will not be retried by `rspec-retry`. This is particularly annoying and a cause of CI failures when tests timeout but are not retried. Fixes https://github.com/Homebrew/brew/issues/8979
This commit is contained in:
		
							parent
							
								
									447fbc1cfc
								
							
						
					
					
						commit
						9d7b0bad11
					
				@ -189,20 +189,15 @@ RSpec.configure do |config|
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      begin
 | 
			
		||||
        timeout = example.metadata.fetch(:timeout, 120)
 | 
			
		||||
        inner_timeout = nil
 | 
			
		||||
        timeout = example.metadata.fetch(:timeout, 60)
 | 
			
		||||
        Timeout.timeout(timeout) do
 | 
			
		||||
          example.run
 | 
			
		||||
        rescue Timeout::Error => e
 | 
			
		||||
          inner_timeout = e
 | 
			
		||||
        end
 | 
			
		||||
      rescue Timeout::Error
 | 
			
		||||
        raise "Example exceeded maximum runtime of #{timeout} seconds."
 | 
			
		||||
      rescue Timeout::Error => e
 | 
			
		||||
        example.example.set_exception(e)
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      raise inner_timeout if inner_timeout
 | 
			
		||||
    rescue SystemExit => e
 | 
			
		||||
      raise "Unexpected exit with status #{e.status}."
 | 
			
		||||
      example.example.set_exception(e)
 | 
			
		||||
    ensure
 | 
			
		||||
      ENV.replace(@__env)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user