From 760d2d567028799d115487a2247a5efecc6637ca Mon Sep 17 00:00:00 2001 From: ce07c3 <ce07c3@gmail.com> Date: Wed, 8 Jul 2020 00:19:04 +0200 Subject: [PATCH 1/5] Adjust `perform` override and call HTTP features wrapping request/response pairs. The change helps reduce differences between mocking and not mocking to successfully test e.g. instrumentation which the `http` gem exposes through said features. --- lib/webmock/http_lib_adapters/http_rb/client.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/webmock/http_lib_adapters/http_rb/client.rb b/lib/webmock/http_lib_adapters/http_rb/client.rb index b343cf182..374b2538d 100644 --- a/lib/webmock/http_lib_adapters/http_rb/client.rb +++ b/lib/webmock/http_lib_adapters/http_rb/client.rb @@ -4,7 +4,11 @@ class Client def perform(request, options) return __perform__(request, options) unless webmock_enabled? - WebMockPerform.new(request) { __perform__(request, options) }.exec + + response = options.features.inject(response) do |response, (_name, feature)| + feature.wrap_response(response) + end + response end def webmock_enabled? From f78f9d79719c4af901a0674cadc0d35b5d0a41ad Mon Sep 17 00:00:00 2001 From: Carl <ce07c3@gmail.com> Date: Wed, 8 Jul 2020 10:32:36 +0200 Subject: [PATCH 2/5] Added missing line / copy-paste problem. --- lib/webmock/http_lib_adapters/http_rb/client.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/webmock/http_lib_adapters/http_rb/client.rb b/lib/webmock/http_lib_adapters/http_rb/client.rb index 374b2538d..8d6a76378 100644 --- a/lib/webmock/http_lib_adapters/http_rb/client.rb +++ b/lib/webmock/http_lib_adapters/http_rb/client.rb @@ -5,6 +5,7 @@ class Client def perform(request, options) return __perform__(request, options) unless webmock_enabled? + response = WebMockPerform.new(request) { __perform__(request, options) }.exec response = options.features.inject(response) do |response, (_name, feature)| feature.wrap_response(response) end From f78ab0afae7b3e1f3713bfcac10b1cb0cff6075c Mon Sep 17 00:00:00 2001 From: Carl <ce07c3@gmail.com> Date: Fri, 4 Dec 2020 11:15:21 +0100 Subject: [PATCH 3/5] Removed whitespace. --- lib/webmock/http_lib_adapters/http_rb/client.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/webmock/http_lib_adapters/http_rb/client.rb b/lib/webmock/http_lib_adapters/http_rb/client.rb index 8d6a76378..418fe1a0b 100644 --- a/lib/webmock/http_lib_adapters/http_rb/client.rb +++ b/lib/webmock/http_lib_adapters/http_rb/client.rb @@ -4,7 +4,7 @@ class Client def perform(request, options) return __perform__(request, options) unless webmock_enabled? - + response = WebMockPerform.new(request) { __perform__(request, options) }.exec response = options.features.inject(response) do |response, (_name, feature)| feature.wrap_response(response) From 90e7ed8398045a0496b9b6071516c8246e10dd40 Mon Sep 17 00:00:00 2001 From: Carl <ce07c3@gmail.com> Date: Tue, 15 Dec 2020 00:30:25 +0100 Subject: [PATCH 4/5] Avoid shadowing. Co-authored-by: Alexey Zapparov <alexey@zapparov.com> --- lib/webmock/http_lib_adapters/http_rb/client.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/webmock/http_lib_adapters/http_rb/client.rb b/lib/webmock/http_lib_adapters/http_rb/client.rb index 418fe1a0b..0b2269e7f 100644 --- a/lib/webmock/http_lib_adapters/http_rb/client.rb +++ b/lib/webmock/http_lib_adapters/http_rb/client.rb @@ -6,9 +6,9 @@ def perform(request, options) return __perform__(request, options) unless webmock_enabled? response = WebMockPerform.new(request) { __perform__(request, options) }.exec - response = options.features.inject(response) do |response, (_name, feature)| - feature.wrap_response(response) - end + + options.features.each { |_name, feature| response = feature.wrap_response(response) } + response end From f730b4f214408aff580da7d757946d960d6cc6c3 Mon Sep 17 00:00:00 2001 From: Carl <ce07c3@gmail.com> Date: Tue, 15 Dec 2020 11:10:57 +0100 Subject: [PATCH 5/5] Fixed whitespace issues. --- lib/webmock/http_lib_adapters/http_rb/client.rb | 2 -- 1 file changed, 2 deletions(-) diff --git a/lib/webmock/http_lib_adapters/http_rb/client.rb b/lib/webmock/http_lib_adapters/http_rb/client.rb index 0b2269e7f..476e55119 100644 --- a/lib/webmock/http_lib_adapters/http_rb/client.rb +++ b/lib/webmock/http_lib_adapters/http_rb/client.rb @@ -6,9 +6,7 @@ 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 end