fix timeout test

This commit is contained in:
rick 2012-04-21 11:29:12 -06:00
parent ebf201c8bf
commit fb0b88350a
2 changed files with 12 additions and 18 deletions

View File

@ -16,14 +16,16 @@ module Faraday
# conn.adapter :rack, MyRackApp
# end
class Rack < Faraday::Adapter
dependency 'rack/test'
dependency do
require 'rack/test'
begin
require 'system_timer' if RUBY_VERSION < '1.9'
rescue LoadError
warn "Faraday: you may want to install system_timer for reliable timeouts"
ensure
SystemTimer = Timeout unless defined? ::SystemTimer
begin
require 'system_timer' if RUBY_VERSION < '1.9'
rescue LoadError
warn "Faraday: you may want to install system_timer for reliable timeouts"
ensure
SystemTimer = Timeout unless defined? ::SystemTimer
end
end
# not prefixed with "HTTP_"
@ -50,7 +52,7 @@ module Faraday
timeout = env[:request][:timeout] || env[:request][:open_timeout]
response = if timeout
SystemTimer.timeout(timeout) { execute_request(env, rack_env) }
SystemTimer.timeout(timeout, Faraday::Error::TimeoutError) { execute_request(env, rack_env) }
else
execute_request(env, rack_env)
end

View File

@ -17,17 +17,9 @@ module Adapters
# not using shared test because error is swallowed by Sinatra
def test_timeout
conn = create_connection(:request => {:timeout => 1, :open_timeout => 1})
err = assert_raise { conn.get '/slow' }
case err
when Faraday::Error::ClientError
# happens on Mac OS
assert_include err.response[:body], 'execution expired'
else
# happens on Travis
assert_instance_of Timeout::Error, err
assert_raise Faraday::Error::ClientError do
conn.get '/slow'
end
end
end
end