vcr 2.2.3 → 2.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG.md +11 -2
- data/Gemfile +1 -1
- data/lib/vcr/library_hooks/excon.rb +26 -3
- data/lib/vcr/version.rb +1 -1
- data/spec/vcr/library_hooks/excon_spec.rb +39 -2
- metadata +4 -4
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,15 @@
|
|
1
|
-
##
|
1
|
+
## 2.2.4 (July 19, 2012)
|
2
2
|
|
3
|
-
[Full Changelog](http://github.com/myronmarston/vcr/compare/v2.2.2
|
3
|
+
[Full Changelog](http://github.com/myronmarston/vcr/compare/v2.2.3...v2.2.4)
|
4
|
+
|
5
|
+
Bug Fixes:
|
6
|
+
|
7
|
+
* Fix excon so real requests are made with a connection constructed with
|
8
|
+
same args as the original connection.
|
9
|
+
|
10
|
+
## 2.2.3 (July 9, 2012)
|
11
|
+
|
12
|
+
[Full Changelog](http://github.com/myronmarston/vcr/compare/v2.2.2...v2.2.3)
|
4
13
|
|
5
14
|
Bug Fixes:
|
6
15
|
|
data/Gemfile
CHANGED
@@ -2,7 +2,7 @@ require 'vcr/util/version_checker'
|
|
2
2
|
require 'vcr/request_handler'
|
3
3
|
require 'excon'
|
4
4
|
|
5
|
-
VCR::VersionChecker.new('Excon', Excon::VERSION, '0.9.6', '0.
|
5
|
+
VCR::VersionChecker.new('Excon', Excon::VERSION, '0.9.6', '0.15').check_version!
|
6
6
|
|
7
7
|
module VCR
|
8
8
|
class LibraryHooks
|
@@ -58,9 +58,15 @@ module VCR
|
|
58
58
|
end
|
59
59
|
end
|
60
60
|
|
61
|
+
def new_connection
|
62
|
+
# Ensure the connection is constructed with the exact same args
|
63
|
+
# that the orginal connection was constructed with.
|
64
|
+
::Excon::Connection.new(*params.fetch(:__construction_args))
|
65
|
+
end
|
66
|
+
|
61
67
|
def perform_real_request
|
62
68
|
begin
|
63
|
-
response =
|
69
|
+
response = new_connection.request(real_request_params)
|
64
70
|
rescue ::Excon::Errors::Error => excon_error
|
65
71
|
response = response_from_excon_error(excon_error)
|
66
72
|
end
|
@@ -151,7 +157,24 @@ module VCR
|
|
151
157
|
end
|
152
158
|
end
|
153
159
|
|
154
|
-
Excon.defaults[:mock] = true
|
160
|
+
::Excon.defaults[:mock] = true
|
161
|
+
|
162
|
+
# We want to get at the Excon::Connection class but WebMock does
|
163
|
+
# some constant-replacing stuff to it, so we need to take that into
|
164
|
+
# account.
|
165
|
+
excon_connection = if defined?(::WebMock::HttpLibAdapters::ExconConnection)
|
166
|
+
::WebMock::HttpLibAdapters::ExconConnection.superclass
|
167
|
+
else
|
168
|
+
::Excon::Connection
|
169
|
+
end
|
170
|
+
|
171
|
+
excon_connection.class_eval do
|
172
|
+
def self.new(*args)
|
173
|
+
super.tap do |instance|
|
174
|
+
instance.connection[:__construction_args] = args
|
175
|
+
end
|
176
|
+
end
|
177
|
+
end
|
155
178
|
|
156
179
|
VCR.configuration.after_library_hooks_loaded do
|
157
180
|
# ensure WebMock's Excon adapter does not conflict with us here
|
data/lib/vcr/version.rb
CHANGED
@@ -25,6 +25,44 @@ describe "Excon hook", :with_monkey_patches => :excon do
|
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
|
+
context 'when the request overrides the connection params' do
|
29
|
+
let!(:excon) { ::Excon.new("http://localhost:#{VCR::SinatraApp.port}/") }
|
30
|
+
|
31
|
+
def deep_dup(hash)
|
32
|
+
Marshal.load(Marshal.dump hash)
|
33
|
+
end
|
34
|
+
|
35
|
+
def intercept_request(&interception)
|
36
|
+
orig_new = ::Excon::Connection.method(:new)
|
37
|
+
|
38
|
+
::Excon::Connection.stub(:new) do |*args1|
|
39
|
+
orig_new.call(*args1).tap do |inst|
|
40
|
+
|
41
|
+
meth = inst.method(:request)
|
42
|
+
inst.stub(:request) do |*args2|
|
43
|
+
interception.call(inst, *args2)
|
44
|
+
meth.call(*args2)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
it 'runs the real request with the same connection params' do
|
51
|
+
connection_params_1 = deep_dup(excon.connection)
|
52
|
+
connection_params_2 = nil
|
53
|
+
|
54
|
+
intercept_request do |instance, *args|
|
55
|
+
connection_params_2 = deep_dup(instance.connection)
|
56
|
+
end
|
57
|
+
|
58
|
+
VCR.use_cassette("excon") do
|
59
|
+
excon.request(:method => :get, :path => '/foo')
|
60
|
+
end
|
61
|
+
|
62
|
+
connection_params_2.should eq(connection_params_1)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
28
66
|
context "when Excon's streaming API is used" do
|
29
67
|
it 'properly records and plays back the response' do
|
30
68
|
VCR.stub(:real_http_connections_allowed? => true)
|
@@ -63,8 +101,7 @@ describe "Excon hook", :with_monkey_patches => :excon do
|
|
63
101
|
it 'performs the right number of retries' do
|
64
102
|
connection = Excon.new("http://localhost:#{VCR::SinatraApp.port}/not_found")
|
65
103
|
|
66
|
-
|
67
|
-
Excon.should_receive(:new).at_least(:once).and_return(connection)
|
104
|
+
Excon::Connection.stub(:new => connection)
|
68
105
|
|
69
106
|
connection.extend Module.new {
|
70
107
|
def request_kernel_call_counts
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vcr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 15
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 2
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 2.2.
|
9
|
+
- 4
|
10
|
+
version: 2.2.4
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Myron Marston
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2012-07-
|
18
|
+
date: 2012-07-20 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
version_requirements: &id001 !ruby/object:Gem::Requirement
|