vcr 4.0.0 → 6.1.0

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/lib/vcr/version.rb CHANGED
@@ -10,7 +10,7 @@ module VCR
10
10
  # * `parts` [Array<Integer>] List of the version parts.
11
11
  def version
12
12
  @version ||= begin
13
- string = '4.0.0'
13
+ string = +'6.1.0'
14
14
 
15
15
  def string.parts
16
16
  split('.').map { |p| p.to_i }
@@ -28,7 +28,7 @@ module VCR
28
28
  parts[2]
29
29
  end
30
30
 
31
- string
31
+ string.freeze
32
32
  end
33
33
  end
34
34
  end
data/lib/vcr.rb CHANGED
@@ -52,7 +52,7 @@ module VCR
52
52
  # Inserts the named cassette using the given cassette options.
53
53
  # New HTTP interactions, if allowed by the cassette's `:record` option, will
54
54
  # be recorded to the cassette. The cassette's existing HTTP interactions
55
- # will be used to stub requests, unless prevented by the cassete's
55
+ # will be used to stub requests, unless prevented by the cassette's
56
56
  # `:record` option.
57
57
  #
58
58
  # @example
@@ -107,6 +107,12 @@ module VCR
107
107
  # @option options :persist_with [Symbol] Which cassette persister to
108
108
  # use. Defaults to :file_system. You can also register and use a
109
109
  # custom persister.
110
+ # @option options :persister_options [Hash] Pass options to the
111
+ # persister specified in `persist_with`. Currently available options for the file_system persister:
112
+ # - `:downcase_cassette_names`: when `true`, names of cassettes will be
113
+ # normalized in lowercase before reading and writing, which can avoid
114
+ # confusion when using both case-sensitive and case-insensitive file
115
+ # systems.
110
116
  # @option options :preserve_exact_body_bytes [Boolean] Whether or not
111
117
  # to base64 encode the bytes of the requests and responses for this cassette
112
118
  # when serializing it. See also `VCR::Configuration#preserve_exact_body_bytes`.
@@ -186,6 +192,9 @@ module VCR
186
192
 
187
193
  begin
188
194
  call_block(block, cassette)
195
+ rescue StandardError
196
+ cassette.run_failed!
197
+ raise
189
198
  ensure
190
199
  eject_cassette
191
200
  end
@@ -194,18 +203,21 @@ module VCR
194
203
  # Inserts multiple cassettes the given names
195
204
  #
196
205
  # @example
197
- # cassettes = [
198
- # { name: 'github' },
199
- # { name: 'apple', options: { erb: true } }
200
- # ]
201
- # VCR.use_cassettes() do
202
- # # make multiple HTTP requests
203
- # end
206
+ # cassettes = [
207
+ # { name: 'github' },
208
+ # { name: 'apple', options: { erb: true } }
209
+ # ]
210
+ # VCR.use_cassettes(cassettes) do
211
+ # # make multiple HTTP requests
212
+ # end
204
213
  def use_cassettes(cassettes, &block)
205
- return use_cassette(cassettes.last[:name]) { block.call } if cassettes.length == 1
206
214
  cassette = cassettes.pop
207
- use_cassette(cassette[:name], cassette[:options]) do
208
- use_cassettes(cassettes, &block)
215
+ use_cassette(cassette[:name], cassette[:options] || {}) do
216
+ if cassettes.empty?
217
+ block.call
218
+ else
219
+ use_cassettes(cassettes, &block)
220
+ end
209
221
  end
210
222
  end
211
223
 
@@ -254,6 +266,7 @@ module VCR
254
266
  # @see #turn_off!
255
267
  # @see #turn_on!
256
268
  # @see #turned_on?
269
+ # @see #turned_on
257
270
  def turned_off(options = {})
258
271
  turn_off!(options)
259
272
 
@@ -289,11 +302,28 @@ module VCR
289
302
  set_context_value(:turned_off, true)
290
303
  end
291
304
 
305
+ # Turns on VCR, for the duration of a block.
306
+ # @param (see #turn_off!)
307
+ # @return [void]
308
+ # @see #turn_off!
309
+ # @see #turned_off
310
+ # @see #turned_on?
311
+ def turned_on(options = {})
312
+ turn_on!
313
+
314
+ begin
315
+ yield
316
+ ensure
317
+ turn_off!(options)
318
+ end
319
+ end
320
+
292
321
  # Turns on VCR, if it has previously been turned off.
293
322
  # @return [void]
294
323
  # @see #turn_off!
295
324
  # @see #turned_off
296
325
  # @see #turned_on?
326
+ # @see #turned_on
297
327
  def turn_on!
298
328
  set_context_value(:turned_off, false)
299
329
  end
@@ -305,6 +335,9 @@ module VCR
305
335
  # @see #turn_off!
306
336
  # @see #turned_off
307
337
  def turned_on?
338
+ linked_context = current_context[:linked_context]
339
+ return !linked_context[:turned_off] if linked_context
340
+
308
341
  !context_value(:turned_off)
309
342
  end
310
343
 
metadata CHANGED
@@ -1,14 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vcr
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.0
4
+ version: 6.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Myron Marston
8
- autorequire:
8
+ - Kurtis Rainbolt-Greene
9
+ - Olle Jonsson
10
+ autorequire:
9
11
  bindir: bin
10
12
  cert_chain: []
11
- date: 2017-12-04 00:00:00.000000000 Z
13
+ date: 2022-03-13 00:00:00.000000000 Z
12
14
  dependencies:
13
15
  - !ruby/object:Gem::Dependency
14
16
  name: bundler
@@ -16,14 +18,14 @@ dependencies:
16
18
  requirements:
17
19
  - - "~>"
18
20
  - !ruby/object:Gem::Version
19
- version: '1.3'
21
+ version: '2.0'
20
22
  type: :development
21
23
  prerelease: false
22
24
  version_requirements: !ruby/object:Gem::Requirement
23
25
  requirements:
24
26
  - - "~>"
25
27
  - !ruby/object:Gem::Version
26
- version: '1.3'
28
+ version: '2.0'
27
29
  - !ruby/object:Gem::Dependency
28
30
  name: rspec
29
31
  requirement: !ruby/object:Gem::Requirement
@@ -44,28 +46,28 @@ dependencies:
44
46
  requirements:
45
47
  - - "~>"
46
48
  - !ruby/object:Gem::Version
47
- version: 3.1.4
49
+ version: 3.4.4
48
50
  type: :development
49
51
  prerelease: false
50
52
  version_requirements: !ruby/object:Gem::Requirement
51
53
  requirements:
52
54
  - - "~>"
53
55
  - !ruby/object:Gem::Version
54
- version: 3.1.4
56
+ version: 3.4.4
55
57
  - !ruby/object:Gem::Dependency
56
58
  name: rake
57
59
  requirement: !ruby/object:Gem::Requirement
58
60
  requirements:
59
- - - "~>"
61
+ - - ">="
60
62
  - !ruby/object:Gem::Version
61
- version: '10.1'
63
+ version: 12.3.3
62
64
  type: :development
63
65
  prerelease: false
64
66
  version_requirements: !ruby/object:Gem::Requirement
65
67
  requirements:
66
- - - "~>"
68
+ - - ">="
67
69
  - !ruby/object:Gem::Version
68
- version: '10.1'
70
+ version: 12.3.3
69
71
  - !ruby/object:Gem::Dependency
70
72
  name: pry
71
73
  requirement: !ruby/object:Gem::Requirement
@@ -151,63 +153,75 @@ dependencies:
151
153
  - !ruby/object:Gem::Version
152
154
  version: '0'
153
155
  - !ruby/object:Gem::Dependency
154
- name: cucumber
156
+ name: hashdiff
155
157
  requirement: !ruby/object:Gem::Requirement
156
158
  requirements:
157
- - - "~>"
159
+ - - ">="
160
+ - !ruby/object:Gem::Version
161
+ version: 1.0.0.beta1
162
+ - - "<"
158
163
  - !ruby/object:Gem::Version
159
- version: 2.0.2
164
+ version: 2.0.0
160
165
  type: :development
161
166
  prerelease: false
162
167
  version_requirements: !ruby/object:Gem::Requirement
163
168
  requirements:
164
- - - "~>"
169
+ - - ">="
165
170
  - !ruby/object:Gem::Version
166
- version: 2.0.2
171
+ version: 1.0.0.beta1
172
+ - - "<"
173
+ - !ruby/object:Gem::Version
174
+ version: 2.0.0
167
175
  - !ruby/object:Gem::Dependency
168
- name: aruba
176
+ name: cucumber
169
177
  requirement: !ruby/object:Gem::Requirement
170
178
  requirements:
171
179
  - - "~>"
172
180
  - !ruby/object:Gem::Version
173
- version: 0.5.3
181
+ version: '7.0'
174
182
  type: :development
175
183
  prerelease: false
176
184
  version_requirements: !ruby/object:Gem::Requirement
177
185
  requirements:
178
186
  - - "~>"
179
187
  - !ruby/object:Gem::Version
180
- version: 0.5.3
188
+ version: '7.0'
181
189
  - !ruby/object:Gem::Dependency
182
- name: faraday
190
+ name: aruba
183
191
  requirement: !ruby/object:Gem::Requirement
184
192
  requirements:
185
193
  - - "~>"
186
194
  - !ruby/object:Gem::Version
187
- version: 0.11.0
195
+ version: 0.14.14
188
196
  type: :development
189
197
  prerelease: false
190
198
  version_requirements: !ruby/object:Gem::Requirement
191
199
  requirements:
192
200
  - - "~>"
193
201
  - !ruby/object:Gem::Version
194
- version: 0.11.0
202
+ version: 0.14.14
195
203
  - !ruby/object:Gem::Dependency
196
- name: httpclient
204
+ name: faraday
197
205
  requirement: !ruby/object:Gem::Requirement
198
206
  requirements:
199
207
  - - ">="
200
208
  - !ruby/object:Gem::Version
201
- version: '0'
209
+ version: 0.11.0
210
+ - - "<"
211
+ - !ruby/object:Gem::Version
212
+ version: 2.0.0
202
213
  type: :development
203
214
  prerelease: false
204
215
  version_requirements: !ruby/object:Gem::Requirement
205
216
  requirements:
206
217
  - - ">="
207
218
  - !ruby/object:Gem::Version
208
- version: '0'
219
+ version: 0.11.0
220
+ - - "<"
221
+ - !ruby/object:Gem::Version
222
+ version: 2.0.0
209
223
  - !ruby/object:Gem::Dependency
210
- name: excon
224
+ name: httpclient
211
225
  requirement: !ruby/object:Gem::Requirement
212
226
  requirements:
213
227
  - - ">="
@@ -221,21 +235,21 @@ dependencies:
221
235
  - !ruby/object:Gem::Version
222
236
  version: '0'
223
237
  - !ruby/object:Gem::Dependency
224
- name: timecop
238
+ name: excon
225
239
  requirement: !ruby/object:Gem::Requirement
226
240
  requirements:
227
241
  - - ">="
228
242
  - !ruby/object:Gem::Version
229
- version: '0'
243
+ version: 0.62.0
230
244
  type: :development
231
245
  prerelease: false
232
246
  version_requirements: !ruby/object:Gem::Requirement
233
247
  requirements:
234
248
  - - ">="
235
249
  - !ruby/object:Gem::Version
236
- version: '0'
250
+ version: 0.62.0
237
251
  - !ruby/object:Gem::Dependency
238
- name: multi_json
252
+ name: timecop
239
253
  requirement: !ruby/object:Gem::Requirement
240
254
  requirements:
241
255
  - - ">="
@@ -307,7 +321,7 @@ dependencies:
307
321
  description: Record your test suite's HTTP interactions and replay them during future
308
322
  test runs for fast, deterministic, accurate tests.
309
323
  email:
310
- - myron.marston@gmail.com
324
+ - kurtis@rainbolt-greene.online
311
325
  executables: []
312
326
  extensions: []
313
327
  extra_rdoc_files: []
@@ -332,7 +346,6 @@ files:
332
346
  - lib/vcr/library_hooks/excon.rb
333
347
  - lib/vcr/library_hooks/faraday.rb
334
348
  - lib/vcr/library_hooks/typhoeus.rb
335
- - lib/vcr/library_hooks/typhoeus_0.4.rb
336
349
  - lib/vcr/library_hooks/webmock.rb
337
350
  - lib/vcr/linked_cassette.rb
338
351
  - lib/vcr/middleware/excon.rb
@@ -354,9 +367,10 @@ files:
354
367
  - lib/vcr/version.rb
355
368
  homepage: https://relishapp.com/vcr/vcr/docs
356
369
  licenses:
370
+ - Hippocratic-2.1
357
371
  - MIT
358
372
  metadata: {}
359
- post_install_message:
373
+ post_install_message:
360
374
  rdoc_options: []
361
375
  require_paths:
362
376
  - lib
@@ -364,16 +378,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
364
378
  requirements:
365
379
  - - ">="
366
380
  - !ruby/object:Gem::Version
367
- version: 1.9.3
381
+ version: '2.6'
368
382
  required_rubygems_version: !ruby/object:Gem::Requirement
369
383
  requirements:
370
384
  - - ">="
371
385
  - !ruby/object:Gem::Version
372
386
  version: '0'
373
387
  requirements: []
374
- rubyforge_project:
375
- rubygems_version: 2.6.13
376
- signing_key:
388
+ rubygems_version: 3.2.7
389
+ signing_key:
377
390
  specification_version: 4
378
391
  summary: Record your test suite's HTTP interactions and replay them during future
379
392
  test runs for fast, deterministic, accurate tests.
@@ -1,103 +0,0 @@
1
- VCR::VersionChecker.new('Typhoeus', Typhoeus::VERSION, '0.3.2').check_version!
2
-
3
- module VCR
4
- class LibraryHooks
5
- # @private
6
- module Typhoeus
7
- # @private
8
- class RequestHandler < ::VCR::RequestHandler
9
- attr_reader :request
10
- def initialize(request)
11
- @request = request
12
- end
13
-
14
- def vcr_request
15
- @vcr_request ||= VCR::Request.new \
16
- request.method,
17
- request.url,
18
- request.body,
19
- request.headers
20
- end
21
-
22
- private
23
-
24
- def externally_stubbed?
25
- ::Typhoeus::Hydra.stubs.detect { |stub| stub.matches?(request) }
26
- end
27
-
28
- def set_typed_request_for_after_hook(*args)
29
- super
30
- request.instance_variable_set(:@__typed_vcr_request, @after_hook_typed_request)
31
- end
32
-
33
- def on_unhandled_request
34
- invoke_after_request_hook(nil)
35
- super
36
- end
37
-
38
- def on_stubbed_by_vcr_request
39
- ::Typhoeus::Response.new \
40
- :http_version => stubbed_response.http_version,
41
- :code => stubbed_response.status.code,
42
- :status_message => stubbed_response.status.message,
43
- :headers_hash => stubbed_response_headers,
44
- :body => stubbed_response.body
45
- end
46
-
47
- def stubbed_response_headers
48
- @stubbed_response_headers ||= {}.tap do |hash|
49
- stubbed_response.headers.each do |key, values|
50
- hash[key] = values.size == 1 ? values.first : values
51
- end if stubbed_response.headers
52
- end
53
- end
54
- end
55
-
56
- # @private
57
- def self.vcr_response_from(response)
58
- VCR::Response.new \
59
- VCR::ResponseStatus.new(response.code, response.status_message),
60
- response.headers_hash,
61
- response.body,
62
- response.http_version
63
- end
64
-
65
- ::Typhoeus::Hydra.after_request_before_on_complete do |request|
66
- unless VCR.library_hooks.disabled?(:typhoeus)
67
- vcr_response = vcr_response_from(request.response)
68
- typed_vcr_request = request.send(:remove_instance_variable, :@__typed_vcr_request)
69
-
70
- unless request.response.mock?
71
- http_interaction = VCR::HTTPInteraction.new(typed_vcr_request, vcr_response)
72
- VCR.record_http_interaction(http_interaction)
73
- end
74
-
75
- VCR.configuration.invoke_hook(:after_http_request, typed_vcr_request, vcr_response)
76
- end
77
- end
78
-
79
- ::Typhoeus::Hydra.register_stub_finder do |request|
80
- VCR::LibraryHooks::Typhoeus::RequestHandler.new(request).handle
81
- end
82
- end
83
- end
84
- end
85
-
86
- # @private
87
- module Typhoeus
88
- class << Hydra
89
- # ensure HTTP requests are always allowed; VCR takes care of disallowing
90
- # them at the appropriate times in its hook
91
- def allow_net_connect_with_vcr?(*args)
92
- VCR.turned_on? ? true : allow_net_connect_without_vcr?
93
- end
94
-
95
- alias allow_net_connect_without_vcr? allow_net_connect?
96
- alias allow_net_connect? allow_net_connect_with_vcr?
97
- end unless Hydra.respond_to?(:allow_net_connect_with_vcr?)
98
- end
99
-
100
- VCR.configuration.after_library_hooks_loaded do
101
- ::Kernel.warn "WARNING: VCR's Typhoeus 0.4 integration is deprecated and will be removed in VCR 3.0."
102
- end
103
-