mirror of
https://github.com/Homebrew/brew.git
synced 2025-07-14 16:09:03 +08:00
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