From b722fe1cfaf494cad3d02fe40928f9a0f0c5d1aa Mon Sep 17 00:00:00 2001 From: Michael Fairley Date: Fri, 15 Oct 2021 11:38:43 -0700 Subject: [PATCH] Prevent double-wrapping http.rb features on non-stubbed requests --- lib/webmock/http_lib_adapters/http_rb/client.rb | 4 +--- lib/webmock/http_lib_adapters/http_rb/webmock.rb | 8 ++++++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/lib/webmock/http_lib_adapters/http_rb/client.rb b/lib/webmock/http_lib_adapters/http_rb/client.rb index 476e55119..2ef024611 100644 --- a/lib/webmock/http_lib_adapters/http_rb/client.rb +++ b/lib/webmock/http_lib_adapters/http_rb/client.rb @@ -5,9 +5,7 @@ class Client def perform(request, options) return __perform__(request, options) unless webmock_enabled? - response = WebMockPerform.new(request) { __perform__(request, options) }.exec - options.features.each { |_name, feature| response = feature.wrap_response(response) } - response + WebMockPerform.new(request, options) { __perform__(request, options) }.exec end def webmock_enabled? diff --git a/lib/webmock/http_lib_adapters/http_rb/webmock.rb b/lib/webmock/http_lib_adapters/http_rb/webmock.rb index f6d34c63b..096e3a75c 100644 --- a/lib/webmock/http_lib_adapters/http_rb/webmock.rb +++ b/lib/webmock/http_lib_adapters/http_rb/webmock.rb @@ -1,7 +1,8 @@ module HTTP class WebMockPerform - def initialize(request, &perform) + def initialize(request, options, &perform) @request = request + @options = options @perform = perform @request_signature = nil end @@ -38,7 +39,10 @@ def replay webmock_response.raise_error_if_any invoke_callbacks(webmock_response, real_request: false) - ::HTTP::Response.from_webmock @request, webmock_response, request_signature + response = ::HTTP::Response.from_webmock @request, webmock_response, request_signature + + @options.features.each { |_name, feature| response = feature.wrap_response(response) } + response end def raise_timeout_error