Merge branch 'catlee/parallel_no_raise' into 'master'

Don't raise_for_status automatically in the Faraday adapter

Closes #224

See merge request os85/httpx!232
This commit is contained in:
HoneyryderChuck 2023-01-20 17:28:25 +00:00
commit 36c840ba5c
2 changed files with 22 additions and 3 deletions

View File

@ -210,9 +210,12 @@ module Faraday
if parallel?(env)
handler = env[:parallel_manager].enqueue(env)
handler.on_response do |response|
response.raise_for_status
save_response(env, response.status, response.body.to_s, response.headers, response.reason) do |response_headers|
response_headers.merge!(response.headers)
if response.is_a?(::HTTPX::Response)
save_response(env, response.status, response.body.to_s, response.headers, response.reason) do |response_headers|
response_headers.merge!(response.headers)
end
else
save_response(env, 0, "", {}, nil)
end
end
return handler
@ -229,6 +232,7 @@ module Faraday
request.response_on_data = env.request.on_data if env.request.stream_response?
response = session.request(request)
# do not call #raise_for_status for HTTP 4xx or 5xx, as faraday has a middleware for that.
response.raise_for_status unless response.is_a?(::HTTPX::Response)
save_response(env, response.status, response.body.to_s, response.headers, response.reason) do |response_headers|
response_headers.merge!(response.headers)

View File

@ -29,6 +29,21 @@ class FaradayTest < Minitest::Test
assert_equal "OK", resp2.reason_phrase
end
def test_adapter_in_parallel_errors
resp1 = nil
connection = create_connection
connection.in_parallel do
resp1 = connection.get("http://wfijojsfsoijf")
assert connection.in_parallel?
assert_nil resp1.reason_phrase
end
assert !connection.in_parallel?
assert_equal 0, resp1.status
assert_nil resp1.reason_phrase
assert_equal "", resp1.body
end
def test_adapter_get_handles_compression
res = get(build_path("/gzip"))
assert JSON.parse(res.body.to_s)["gzipped"]