Only reset the server error if there was an error to raise - fix race condition

This commit is contained in:
Thomas Walpole 2017-02-27 11:06:48 -08:00
parent 41542d5617
commit 866c975076
1 changed files with 6 additions and 4 deletions

View File

@ -123,17 +123,19 @@ module Capybara
# Raise errors encountered in the server
#
def raise_server_error!
if Capybara.raise_server_errors and @server and @server.error
if @server and @server.error
# Force an explanation for the error being raised as the exception cause
begin
raise CapybaraError, "Your application server raised an error - It has been raised in your test code because Capybara.raise_server_errors == true"
if Capybara.raise_server_errors
raise CapybaraError, "Your application server raised an error - It has been raised in your test code because Capybara.raise_server_errors == true"
end
rescue CapybaraError
#needed to get the cause set correctly in JRuby -- otherwise we could just do raise @server.error
raise @server.error, @server.error.message, @server.error.backtrace
ensure
@server.reset_error!
end
end
ensure
@server.reset_error! if @server
end
##