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

View File

@ -17,17 +17,9 @@ module Adapters
# not using shared test because error is swallowed by Sinatra # not using shared test because error is swallowed by Sinatra
def test_timeout def test_timeout
conn = create_connection(:request => {:timeout => 1, :open_timeout => 1}) conn = create_connection(:request => {:timeout => 1, :open_timeout => 1})
err = assert_raise { conn.get '/slow' } assert_raise Faraday::Error::ClientError do
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
end end
end end
end end
end end