vcr 2.3.0 → 2.4.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.
Files changed (41) hide show
  1. data/.gitignore +5 -2
  2. data/.travis.yml +3 -1
  3. data/Appraisals +0 -4
  4. data/CHANGELOG.md +90 -54
  5. data/Gemfile +6 -6
  6. data/{gemfiles/typhoeus-new.gemfile.lock → Gemfile.lock} +34 -37
  7. data/LICENSE +1 -1
  8. data/README.md +14 -7
  9. data/Rakefile +8 -6
  10. data/cucumber.yml +10 -7
  11. data/features/.nav +3 -0
  12. data/features/configuration/preserve_exact_body_bytes.feature +2 -2
  13. data/features/configuration/query_parser.feature +84 -0
  14. data/features/configuration/uri_parser.feature +1 -1
  15. data/features/hooks/around_http_request.feature +1 -1
  16. data/features/request_matching/README.md +2 -0
  17. data/features/request_matching/query.feature +97 -0
  18. data/gemfiles/{typhoeus-old.gemfile → typhoeus_old.gemfile} +1 -3
  19. data/gemfiles/{typhoeus-old.gemfile.lock → typhoeus_old.gemfile.lock} +25 -17
  20. data/lib/vcr.rb +5 -1
  21. data/lib/vcr/configuration.rb +20 -0
  22. data/lib/vcr/deprecations.rb +62 -1
  23. data/lib/vcr/errors.rb +9 -9
  24. data/lib/vcr/library_hooks/fakeweb.rb +1 -0
  25. data/lib/vcr/library_hooks/typhoeus.rb +1 -0
  26. data/lib/vcr/library_hooks/webmock.rb +1 -1
  27. data/lib/vcr/request_matcher_registry.rb +8 -1
  28. data/lib/vcr/structs.rb +2 -2
  29. data/lib/vcr/test_frameworks/rspec.rb +0 -56
  30. data/lib/vcr/version.rb +1 -1
  31. data/script/ci.sh +2 -2
  32. data/spec/monkey_patches.rb +1 -1
  33. data/spec/spec_helper.rb +12 -13
  34. data/spec/support/http_library_adapters.rb +9 -1
  35. data/spec/vcr/deprecations_spec.rb +11 -9
  36. data/spec/vcr/library_hooks/fakeweb_spec.rb +5 -0
  37. data/spec/vcr/library_hooks/typhoeus_spec.rb +55 -0
  38. data/spec/vcr/request_matcher_registry_spec.rb +39 -0
  39. data/vcr.gemspec +4 -3
  40. metadata +79 -85
  41. data/gemfiles/typhoeus-new.gemfile +0 -18
@@ -2,7 +2,7 @@ require 'vcr/util/version_checker'
2
2
  require 'vcr/request_handler'
3
3
  require 'webmock'
4
4
 
5
- VCR::VersionChecker.new('WebMock', WebMock.version, '1.8.0', '1.8').check_version!
5
+ VCR::VersionChecker.new('WebMock', WebMock.version, '1.8.0', '1.9').check_version!
6
6
 
7
7
  module VCR
8
8
  class LibraryHooks
@@ -19,7 +19,7 @@ module VCR
19
19
  class URIWithoutParamsMatcher < Struct.new(:params_to_ignore)
20
20
  def partial_uri_from(request)
21
21
  request.parsed_uri.tap do |uri|
22
- return request.uri unless uri.query # ignore uris without params, e.g. "http://example.com/"
22
+ return uri unless uri.query # ignore uris without params, e.g. "http://example.com/"
23
23
 
24
24
  uri.query = uri.query.split('&').tap { |params|
25
25
  params.map! do |p|
@@ -31,6 +31,8 @@ module VCR
31
31
  params.reject! { |p| params_to_ignore.include?(p.first) }
32
32
  params.map! { |p| p.join('=') }
33
33
  }.join('&')
34
+
35
+ uri.query = nil if uri.query.empty?
34
36
  end
35
37
  end
36
38
 
@@ -118,6 +120,11 @@ module VCR
118
120
  register(:path) do |r1, r2|
119
121
  r1.parsed_uri.path == r2.parsed_uri.path
120
122
  end
123
+
124
+ register(:query) do |r1, r2|
125
+ VCR.configuration.query_parser.call(r1.parsed_uri.query.to_s) ==
126
+ VCR.configuration.query_parser.call(r2.parsed_uri.query.to_s)
127
+ end
121
128
  end
122
129
  end
123
130
  end
@@ -170,8 +170,8 @@ module VCR
170
170
  end
171
171
  end
172
172
 
173
- if RUBY_VERSION =~ /1.9/
174
- # 1.9 hashes are already ordered.
173
+ if RUBY_VERSION.to_f > 1.8
174
+ # 1.9+ hashes are already ordered.
175
175
  def self.apply_to(*args); end
176
176
  else
177
177
  def self.apply_to(hash, keys)
@@ -1,62 +1,6 @@
1
1
  module VCR
2
2
  # Integrates VCR with RSpec.
3
3
  module RSpec
4
-
5
- # Contains macro methods to assist with VCR usage. These methods are
6
- # intended to be used directly in an RSpec example group. To make these
7
- # available in your RSpec example groups, extend the module in an individual
8
- # example group, or configure RSpec to extend the module in all example groups.
9
- #
10
- # @example
11
- # RSpec.configure do |c|
12
- # c.extend VCR::RSpec::Macros
13
- # end
14
- #
15
- module Macros
16
-
17
- # Sets up a `before` and `after` hook that will insert and eject a
18
- # cassette, respectively.
19
- #
20
- # @example
21
- # describe "Some API Client" do
22
- # use_vcr_cassette "some_api", :record => :new_episodes
23
- # end
24
- #
25
- # @param [(optional) String] name the cassette name; it will be inferred by the example
26
- # group descriptions if not given.
27
- # @param [(optional) Hash] options the cassette options
28
- def use_vcr_cassette(*args)
29
- options = args.last.is_a?(Hash) ? args.pop : {}
30
- name = args.first || infer_cassette_name
31
-
32
- before(:each) do
33
- VCR.insert_cassette(name, options)
34
- end
35
-
36
- after(:each) do
37
- VCR.eject_cassette
38
- end
39
- end
40
-
41
- private
42
-
43
- def infer_cassette_name
44
- # RSpec 1 exposes #description_parts; use that if its available
45
- return description_parts.join("/") if respond_to?(:description_parts)
46
-
47
- # Otherwise use RSpec 2 metadata...
48
- group_descriptions = []
49
- klass = self
50
-
51
- while klass.respond_to?(:metadata) && klass.metadata
52
- group_descriptions << klass.metadata[:example_group][:description]
53
- klass = klass.superclass
54
- end
55
-
56
- group_descriptions.compact.reverse.join('/')
57
- end
58
- end
59
-
60
4
  # @private
61
5
  module Metadata
62
6
  extend self
@@ -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 = '2.3.0'
13
+ string = '2.4.0'
14
14
 
15
15
  def string.parts
16
16
  split('.').map { |p| p.to_i }
@@ -2,8 +2,8 @@
2
2
  set -e -x
3
3
 
4
4
  echo "-------- Running Typhoeus 0.4 Specs ---------"
5
- bundle install --gemfile=gemfiles/typhoeus-old.gemfile
6
- BUNDLE_GEMFILE=gemfiles/typhoeus-old.gemfile bundle exec rspec spec/vcr/library_hooks/typhoeus_0.4_spec.rb --format progress --backtrace
5
+ bundle install --gemfile=gemfiles/typhoeus_old.gemfile --without extras
6
+ BUNDLE_GEMFILE=gemfiles/typhoeus_old.gemfile bundle exec rspec spec/vcr/library_hooks/typhoeus_0.4_spec.rb --format progress --backtrace
7
7
 
8
8
  # Setup vendored rspec-1
9
9
  git submodule init
@@ -1,4 +1,4 @@
1
- require 'typhoeus' if RUBY_INTERPRETER == :mri
1
+ require 'typhoeus'
2
2
 
3
3
  module MonkeyPatches
4
4
  extend self
@@ -6,6 +6,8 @@ if RUBY_VERSION =~ /1.9/ && RUBY_ENGINE == 'ruby'
6
6
  SimpleCov.start do
7
7
  add_filter "/spec"
8
8
  add_filter "/features"
9
+ add_filter "/bin"
10
+ add_filter "/bundle"
9
11
 
10
12
  # internet_connection mostly contains logic copied from the ruby 1.8.7
11
13
  # stdlib for which I haven't written tests.
@@ -21,25 +23,22 @@ if RUBY_VERSION =~ /1.9/ && RUBY_ENGINE == 'ruby'
21
23
  end
22
24
 
23
25
  using_git = File.exist?(File.expand_path('../../.git/', __FILE__))
24
- if using_git
25
- require 'bundler'
26
- Bundler.setup
27
- end
26
+ require 'bundler/setup' if using_git
28
27
 
29
28
  require 'rspec'
30
29
 
31
- require "support/fixnum_extension.rb"
32
- require "support/limited_uri.rb"
33
- require "support/http_library_adapters.rb"
34
- require "support/ruby_interpreter.rb"
35
- require "support/shared_example_groups/hook_into_http_library.rb"
36
- require "support/shared_example_groups/request_hooks.rb"
37
- require "support/sinatra_app.rb"
38
- require "support/vcr_localhost_server.rb"
39
- require "support/vcr_stub_helpers.rb"
30
+ require "support/fixnum_extension"
31
+ require "support/limited_uri"
32
+ require "support/ruby_interpreter"
33
+ require "support/shared_example_groups/hook_into_http_library"
34
+ require "support/shared_example_groups/request_hooks"
35
+ require "support/sinatra_app"
36
+ require "support/vcr_localhost_server"
37
+ require "support/vcr_stub_helpers"
40
38
 
41
39
  require 'vcr'
42
40
  require 'monkey_patches'
41
+ require "support/http_library_adapters"
43
42
 
44
43
  module VCR
45
44
  SPEC_ROOT = File.dirname(__FILE__)
@@ -160,7 +160,15 @@ HTTP_LIBRARY_ADAPTERS['typhoeus'] = Module.new do
160
160
  alias get_body_object get_body_string
161
161
 
162
162
  def get_header(header_key, response)
163
- response.headers[header_key]
163
+ # Due to https://github.com/typhoeus/typhoeus/commit/256c95473d5d40d7ec2f5db603687323ddd73689
164
+ # headers are now downcased.
165
+ # ...except when they're not. I'm not 100% why (I haven't had time to dig into it yet)
166
+ # but in some situations the headers aren't downcased. I think it has to do with playback; VCR
167
+ # isn't sending the headers in downcased to typhoeus. It gets complicated with the interaction
168
+ # w/ WebMock, and the fact that webmock normalizes headers in a different fashion.
169
+ #
170
+ # For now this hack works.
171
+ response.headers.fetch(header_key.downcase) { response.headers[header_key] }
164
172
  end
165
173
 
166
174
  def make_http_request(method, url, body = nil, headers = {})
@@ -14,8 +14,7 @@ describe VCR, 'deprecations', :disable_warnings do
14
14
  end
15
15
 
16
16
  it 'prints a deprecation warning' do
17
- VCR.should_receive(:warn).with \
18
- "WARNING: `VCR.config` is deprecated. Use VCR.configure instead."
17
+ VCR.should_receive(:warn).with(/VCR.config.*deprecated/i)
19
18
 
20
19
  VCR.config { }
21
20
  end
@@ -27,8 +26,7 @@ describe VCR, 'deprecations', :disable_warnings do
27
26
  end
28
27
 
29
28
  it 'prints a deprecation warning' do
30
- VCR.should_receive(:warn).with \
31
- "WARNING: `VCR::Config` is deprecated. Use VCR.configuration instead."
29
+ VCR.should_receive(:warn).with(/VCR::Config.*deprecated/i)
32
30
 
33
31
  VCR::Config
34
32
  end
@@ -46,8 +44,7 @@ describe VCR, 'deprecations', :disable_warnings do
46
44
  end
47
45
 
48
46
  it 'prints a deprecation warning' do
49
- VCR::Cassette.should_receive(:warn).with \
50
- "WARNING: `VCR::Cassette::MissingERBVariableError` is deprecated. Use `VCR::Errors::MissingERBVariableError` instead."
47
+ VCR::Cassette.should_receive(:warn).with(/VCR::Cassette::MissingERBVariableError.*deprecated/i)
51
48
 
52
49
  VCR::Cassette::MissingERBVariableError
53
50
  end
@@ -66,9 +63,7 @@ describe VCR, 'deprecations', :disable_warnings do
66
63
  end
67
64
 
68
65
  it 'prints a deprecation warning' do
69
- VCR.configuration.should_receive(:warn).with \
70
- "WARNING: `VCR.config { |c| c.stub_with ... }` is deprecated. Use `VCR.configure { |c| c.hook_into ... }` instead."
71
-
66
+ VCR.configuration.should_receive(:warn).with(/stub_with.*deprecated/i)
72
67
  VCR.configure { |c| c.stub_with :fakeweb, :excon }
73
68
  end
74
69
  end
@@ -79,5 +74,12 @@ describe VCR, 'deprecations', :disable_warnings do
79
74
  VCR::Middleware::Faraday.new(stub) { }
80
75
  end
81
76
  end
77
+
78
+ describe "VCR::RSpec::Macros" do
79
+ it 'prints a deprecation warning' do
80
+ Kernel.should_receive(:warn).with(/VCR::RSpec::Macros is deprecated/)
81
+ Class.new.extend(VCR::RSpec::Macros)
82
+ end
83
+ end
82
84
  end
83
85
 
@@ -125,6 +125,11 @@ describe "FakeWeb hook", :with_monkey_patches => :fakeweb do
125
125
  it 'does not raise an error' do
126
126
  run_hook # should not raise an error
127
127
  end
128
+
129
+ it "warns about FakeWeb deprecation" do
130
+ ::Kernel.should_receive(:warn).with("WARNING: VCR's FakeWeb integration is deprecated and will be removed in VCR 3.0.")
131
+ run_hook
132
+ end
128
133
  end
129
134
  end
130
135
 
@@ -27,5 +27,60 @@ describe "Typhoeus hook", :with_monkey_patches => :typhoeus do
27
27
  $typhoeus_after_loaded_hook.conditionally_invoke
28
28
  end
29
29
  end
30
+
31
+ context 'when there are nested hydra queues' do
32
+ def make_requests
33
+ VCR.use_cassette("nested") do
34
+ response_1 = response_2 = nil
35
+
36
+ hydra = Typhoeus::Hydra.new
37
+ request = Typhoeus::Request.new("http://localhost:#{VCR::SinatraApp.port}/")
38
+
39
+ request.on_success do |r1|
40
+ response_1 = r1
41
+
42
+ nested = Typhoeus::Request.new("http://localhost:#{VCR::SinatraApp.port}/foo")
43
+ nested.on_success { |r2| response_2 = r2 }
44
+
45
+ hydra.queue(nested)
46
+ end
47
+
48
+ hydra.queue(request)
49
+ hydra.run
50
+
51
+ return body_for(response_1), body_for(response_2)
52
+ end
53
+ end
54
+
55
+ def body_for(response)
56
+ return :no_response if response.nil?
57
+ response.body
58
+ end
59
+
60
+ it 'records and plays back properly' do
61
+ recorded = make_requests
62
+ played_back = make_requests
63
+
64
+ played_back.should eq(recorded)
65
+ end
66
+ end
67
+
68
+ context '#effective_url' do
69
+ def make_single_request
70
+ VCR.use_cassette('single') do
71
+ response = Typhoeus::Request.new("http://localhost:#{VCR::SinatraApp.port}/").run
72
+
73
+ response.effective_url
74
+ end
75
+ end
76
+
77
+ it 'recorded and played back properly' do
78
+ recorded = make_single_request
79
+ played_back = make_single_request
80
+ recorded.should_not be_nil
81
+
82
+ played_back.should eq(recorded)
83
+ end
84
+ end
30
85
  end
31
86
 
@@ -1,10 +1,12 @@
1
1
  require 'vcr/request_matcher_registry'
2
2
  require 'vcr/structs'
3
3
  require 'support/limited_uri'
4
+ require 'cgi'
4
5
 
5
6
  module VCR
6
7
  describe RequestMatcherRegistry do
7
8
  before { VCR.stub_chain(:configuration, :uri_parser) { LimitedURI } }
9
+ before { VCR.stub_chain(:configuration, :query_parser) { CGI.method(:parse) } }
8
10
 
9
11
  def request_with(values)
10
12
  VCR::Request.new.tap do |request|
@@ -143,6 +145,13 @@ module VCR
143
145
  request_with(:uri => 'http://example.com/bar')
144
146
  ).should be_false
145
147
  end
148
+
149
+ it 'matches a second request when all parameters are filtered' do
150
+ subject[subject.send(meth, :q, :oq)].matches?(
151
+ request_with(:uri => 'http://example.com/search'),
152
+ request_with(:uri => 'http://example.com/search?q=vcr&oq=vcr')
153
+ ).should be_true
154
+ end
146
155
  end
147
156
  end
148
157
 
@@ -242,6 +251,36 @@ module VCR
242
251
  ).should be_false
243
252
  end
244
253
  end
254
+
255
+ describe ":query" do
256
+ it 'matches when it is identical' do
257
+ subject[:query].matches?(
258
+ request_with(:uri => 'http://foo.com/bar?a=8'),
259
+ request_with(:uri => 'http://goo.com/car?a=8')
260
+ ).should be_true
261
+ end
262
+
263
+ it 'matches when empty' do
264
+ subject[:query].matches?(
265
+ request_with(:uri => 'http://foo.com/bar'),
266
+ request_with(:uri => 'http://goo.com/car')
267
+ ).should be_true
268
+ end
269
+
270
+ it 'matches when parameters are reordered' do
271
+ subject[:query].matches?(
272
+ request_with(:uri => 'http://foo.com/bar?a=8&b=9'),
273
+ request_with(:uri => 'http://goo.com/car?b=9&a=8')
274
+ ).should be_true
275
+ end
276
+
277
+ it 'does not match when it is not the same' do
278
+ subject[:query].matches?(
279
+ request_with(:uri => 'http://foo.com/bar?a=8'),
280
+ request_with(:uri => 'http://goo.com/car?b=8')
281
+ ).should be_false
282
+ end
283
+ end
245
284
  end
246
285
  end
247
286
  end
@@ -3,7 +3,8 @@ require "vcr/version"
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "vcr"
6
- s.homepage = "http://github.com/myronmarston/vcr"
6
+ s.homepage = "http://github.com/vcr/vcr"
7
+ s.license = "MIT"
7
8
  s.authors = ["Myron Marston"]
8
9
  s.summary = "Record your test suite's HTTP interactions and replay them during future test runs for fast, deterministic, accurate tests."
9
10
  s.description = "VCR provides a simple API to record and replay your test suite's HTTP interactions. It works with a variety of HTTP client libraries, HTTP stubbing libraries and testing frameworks."
@@ -27,7 +28,7 @@ Gem::Specification.new do |s|
27
28
  s.add_development_dependency 'shoulda', '~> 2.9.2'
28
29
 
29
30
  s.add_development_dependency 'fakeweb', '~> 1.3.0'
30
- s.add_development_dependency 'webmock', '~> 1.8.3'
31
+ s.add_development_dependency 'webmock', '~> 1.9'
31
32
 
32
33
  s.add_development_dependency 'faraday', '~> 0.8'
33
34
  s.add_development_dependency 'httpclient', '~> 2.2'
@@ -40,12 +41,12 @@ Gem::Specification.new do |s|
40
41
  s.add_development_dependency 'json', '~> 1.6.5'
41
42
  s.add_development_dependency 'simplecov', '~> 0.5.3'
42
43
  s.add_development_dependency 'redis', '~> 2.2.2'
44
+ s.add_development_dependency 'typhoeus', '~> 0.5.3'
43
45
 
44
46
  unless RUBY_PLATFORM == 'java'
45
47
  s.add_development_dependency 'patron', '~> 0.4.15'
46
48
  s.add_development_dependency 'em-http-request', '~> 1.0.2'
47
49
  s.add_development_dependency 'curb', '~> 0.8.0'
48
- s.add_development_dependency 'typhoeus', '>= 0.3.3', '< 0.5.0'
49
50
  s.add_development_dependency 'yajl-ruby', '~> 1.1.0'
50
51
  end
51
52
  end
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: 3
4
+ hash: 31
5
5
  prerelease:
6
6
  segments:
7
7
  - 2
8
- - 3
8
+ - 4
9
9
  - 0
10
- version: 2.3.0
10
+ version: 2.4.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Myron Marston
@@ -15,10 +15,9 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-10-30 00:00:00 Z
18
+ date: 2013-01-05 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
- name: bundler
22
21
  version_requirements: &id001 !ruby/object:Gem::Requirement
23
22
  none: false
24
23
  requirements:
@@ -30,11 +29,11 @@ dependencies:
30
29
  - 0
31
30
  - 7
32
31
  version: 1.0.7
33
- type: :development
34
32
  prerelease: false
33
+ type: :development
34
+ name: bundler
35
35
  requirement: *id001
36
36
  - !ruby/object:Gem::Dependency
37
- name: rake
38
37
  version_requirements: &id002 !ruby/object:Gem::Requirement
39
38
  none: false
40
39
  requirements:
@@ -46,11 +45,11 @@ dependencies:
46
45
  - 9
47
46
  - 2
48
47
  version: 0.9.2
49
- type: :development
50
48
  prerelease: false
49
+ type: :development
50
+ name: rake
51
51
  requirement: *id002
52
52
  - !ruby/object:Gem::Dependency
53
- name: cucumber
54
53
  version_requirements: &id003 !ruby/object:Gem::Requirement
55
54
  none: false
56
55
  requirements:
@@ -62,11 +61,11 @@ dependencies:
62
61
  - 1
63
62
  - 4
64
63
  version: 1.1.4
65
- type: :development
66
64
  prerelease: false
65
+ type: :development
66
+ name: cucumber
67
67
  requirement: *id003
68
68
  - !ruby/object:Gem::Dependency
69
- name: aruba
70
69
  version_requirements: &id004 !ruby/object:Gem::Requirement
71
70
  none: false
72
71
  requirements:
@@ -78,11 +77,11 @@ dependencies:
78
77
  - 4
79
78
  - 11
80
79
  version: 0.4.11
81
- type: :development
82
80
  prerelease: false
81
+ type: :development
82
+ name: aruba
83
83
  requirement: *id004
84
84
  - !ruby/object:Gem::Dependency
85
- name: rspec
86
85
  version_requirements: &id005 !ruby/object:Gem::Requirement
87
86
  none: false
88
87
  requirements:
@@ -93,11 +92,11 @@ dependencies:
93
92
  - 2
94
93
  - 11
95
94
  version: "2.11"
96
- type: :development
97
95
  prerelease: false
96
+ type: :development
97
+ name: rspec
98
98
  requirement: *id005
99
99
  - !ruby/object:Gem::Dependency
100
- name: shoulda
101
100
  version_requirements: &id006 !ruby/object:Gem::Requirement
102
101
  none: false
103
102
  requirements:
@@ -109,11 +108,11 @@ dependencies:
109
108
  - 9
110
109
  - 2
111
110
  version: 2.9.2
112
- type: :development
113
111
  prerelease: false
112
+ type: :development
113
+ name: shoulda
114
114
  requirement: *id006
115
115
  - !ruby/object:Gem::Dependency
116
- name: fakeweb
117
116
  version_requirements: &id007 !ruby/object:Gem::Requirement
118
117
  none: false
119
118
  requirements:
@@ -125,27 +124,26 @@ dependencies:
125
124
  - 3
126
125
  - 0
127
126
  version: 1.3.0
128
- type: :development
129
127
  prerelease: false
128
+ type: :development
129
+ name: fakeweb
130
130
  requirement: *id007
131
131
  - !ruby/object:Gem::Dependency
132
- name: webmock
133
132
  version_requirements: &id008 !ruby/object:Gem::Requirement
134
133
  none: false
135
134
  requirements:
136
135
  - - ~>
137
136
  - !ruby/object:Gem::Version
138
- hash: 49
137
+ hash: 29
139
138
  segments:
140
139
  - 1
141
- - 8
142
- - 3
143
- version: 1.8.3
144
- type: :development
140
+ - 9
141
+ version: "1.9"
145
142
  prerelease: false
143
+ type: :development
144
+ name: webmock
146
145
  requirement: *id008
147
146
  - !ruby/object:Gem::Dependency
148
- name: faraday
149
147
  version_requirements: &id009 !ruby/object:Gem::Requirement
150
148
  none: false
151
149
  requirements:
@@ -156,11 +154,11 @@ dependencies:
156
154
  - 0
157
155
  - 8
158
156
  version: "0.8"
159
- type: :development
160
157
  prerelease: false
158
+ type: :development
159
+ name: faraday
161
160
  requirement: *id009
162
161
  - !ruby/object:Gem::Dependency
163
- name: httpclient
164
162
  version_requirements: &id010 !ruby/object:Gem::Requirement
165
163
  none: false
166
164
  requirements:
@@ -171,11 +169,11 @@ dependencies:
171
169
  - 2
172
170
  - 2
173
171
  version: "2.2"
174
- type: :development
175
172
  prerelease: false
173
+ type: :development
174
+ name: httpclient
176
175
  requirement: *id010
177
176
  - !ruby/object:Gem::Dependency
178
- name: excon
179
177
  version_requirements: &id011 !ruby/object:Gem::Requirement
180
178
  none: false
181
179
  requirements:
@@ -194,11 +192,11 @@ dependencies:
194
192
  - 1
195
193
  - 0
196
194
  version: "1.0"
197
- type: :development
198
195
  prerelease: false
196
+ type: :development
197
+ name: excon
199
198
  requirement: *id011
200
199
  - !ruby/object:Gem::Dependency
201
- name: timecop
202
200
  version_requirements: &id012 !ruby/object:Gem::Requirement
203
201
  none: false
204
202
  requirements:
@@ -210,11 +208,11 @@ dependencies:
210
208
  - 3
211
209
  - 5
212
210
  version: 0.3.5
213
- type: :development
214
211
  prerelease: false
212
+ type: :development
213
+ name: timecop
215
214
  requirement: *id012
216
215
  - !ruby/object:Gem::Dependency
217
- name: rack
218
216
  version_requirements: &id013 !ruby/object:Gem::Requirement
219
217
  none: false
220
218
  requirements:
@@ -226,11 +224,11 @@ dependencies:
226
224
  - 3
227
225
  - 6
228
226
  version: 1.3.6
229
- type: :development
230
227
  prerelease: false
228
+ type: :development
229
+ name: rack
231
230
  requirement: *id013
232
231
  - !ruby/object:Gem::Dependency
233
- name: sinatra
234
232
  version_requirements: &id014 !ruby/object:Gem::Requirement
235
233
  none: false
236
234
  requirements:
@@ -242,11 +240,11 @@ dependencies:
242
240
  - 3
243
241
  - 2
244
242
  version: 1.3.2
245
- type: :development
246
243
  prerelease: false
244
+ type: :development
245
+ name: sinatra
247
246
  requirement: *id014
248
247
  - !ruby/object:Gem::Dependency
249
- name: multi_json
250
248
  version_requirements: &id015 !ruby/object:Gem::Requirement
251
249
  none: false
252
250
  requirements:
@@ -258,11 +256,11 @@ dependencies:
258
256
  - 0
259
257
  - 3
260
258
  version: 1.0.3
261
- type: :development
262
259
  prerelease: false
260
+ type: :development
261
+ name: multi_json
263
262
  requirement: *id015
264
263
  - !ruby/object:Gem::Dependency
265
- name: json
266
264
  version_requirements: &id016 !ruby/object:Gem::Requirement
267
265
  none: false
268
266
  requirements:
@@ -274,11 +272,11 @@ dependencies:
274
272
  - 6
275
273
  - 5
276
274
  version: 1.6.5
277
- type: :development
278
275
  prerelease: false
276
+ type: :development
277
+ name: json
279
278
  requirement: *id016
280
279
  - !ruby/object:Gem::Dependency
281
- name: simplecov
282
280
  version_requirements: &id017 !ruby/object:Gem::Requirement
283
281
  none: false
284
282
  requirements:
@@ -290,11 +288,11 @@ dependencies:
290
288
  - 5
291
289
  - 3
292
290
  version: 0.5.3
293
- type: :development
294
291
  prerelease: false
292
+ type: :development
293
+ name: simplecov
295
294
  requirement: *id017
296
295
  - !ruby/object:Gem::Dependency
297
- name: redis
298
296
  version_requirements: &id018 !ruby/object:Gem::Requirement
299
297
  none: false
300
298
  requirements:
@@ -306,83 +304,75 @@ dependencies:
306
304
  - 2
307
305
  - 2
308
306
  version: 2.2.2
309
- type: :development
310
307
  prerelease: false
308
+ type: :development
309
+ name: redis
311
310
  requirement: *id018
312
311
  - !ruby/object:Gem::Dependency
313
- name: patron
314
312
  version_requirements: &id019 !ruby/object:Gem::Requirement
315
313
  none: false
316
314
  requirements:
317
315
  - - ~>
318
316
  - !ruby/object:Gem::Version
319
- hash: 17
317
+ hash: 13
320
318
  segments:
321
319
  - 0
322
- - 4
323
- - 15
324
- version: 0.4.15
325
- type: :development
320
+ - 5
321
+ - 3
322
+ version: 0.5.3
326
323
  prerelease: false
324
+ type: :development
325
+ name: typhoeus
327
326
  requirement: *id019
328
327
  - !ruby/object:Gem::Dependency
329
- name: em-http-request
330
328
  version_requirements: &id020 !ruby/object:Gem::Requirement
331
329
  none: false
332
330
  requirements:
333
331
  - - ~>
334
332
  - !ruby/object:Gem::Version
335
- hash: 19
333
+ hash: 17
336
334
  segments:
337
- - 1
338
335
  - 0
339
- - 2
340
- version: 1.0.2
341
- type: :development
336
+ - 4
337
+ - 15
338
+ version: 0.4.15
342
339
  prerelease: false
340
+ type: :development
341
+ name: patron
343
342
  requirement: *id020
344
343
  - !ruby/object:Gem::Dependency
345
- name: curb
346
344
  version_requirements: &id021 !ruby/object:Gem::Requirement
347
345
  none: false
348
346
  requirements:
349
347
  - - ~>
350
348
  - !ruby/object:Gem::Version
351
- hash: 63
349
+ hash: 19
352
350
  segments:
351
+ - 1
353
352
  - 0
354
- - 8
355
- - 0
356
- version: 0.8.0
357
- type: :development
353
+ - 2
354
+ version: 1.0.2
358
355
  prerelease: false
356
+ type: :development
357
+ name: em-http-request
359
358
  requirement: *id021
360
359
  - !ruby/object:Gem::Dependency
361
- name: typhoeus
362
360
  version_requirements: &id022 !ruby/object:Gem::Requirement
363
361
  none: false
364
362
  requirements:
365
- - - ">="
366
- - !ruby/object:Gem::Version
367
- hash: 21
368
- segments:
369
- - 0
370
- - 3
371
- - 3
372
- version: 0.3.3
373
- - - <
363
+ - - ~>
374
364
  - !ruby/object:Gem::Version
375
- hash: 11
365
+ hash: 63
376
366
  segments:
377
367
  - 0
378
- - 5
368
+ - 8
379
369
  - 0
380
- version: 0.5.0
381
- type: :development
370
+ version: 0.8.0
382
371
  prerelease: false
372
+ type: :development
373
+ name: curb
383
374
  requirement: *id022
384
375
  - !ruby/object:Gem::Dependency
385
- name: yajl-ruby
386
376
  version_requirements: &id023 !ruby/object:Gem::Requirement
387
377
  none: false
388
378
  requirements:
@@ -394,8 +384,9 @@ dependencies:
394
384
  - 1
395
385
  - 0
396
386
  version: 1.1.0
397
- type: :development
398
387
  prerelease: false
388
+ type: :development
389
+ name: yajl-ruby
399
390
  requirement: *id023
400
391
  description: VCR provides a simple API to record and replay your test suite's HTTP interactions. It works with a variety of HTTP client libraries, HTTP stubbing libraries and testing frameworks.
401
392
  email: myron.marston@gmail.com
@@ -417,6 +408,7 @@ files:
417
408
  - CHANGELOG.md
418
409
  - CONTRIBUTING.md
419
410
  - Gemfile
411
+ - Gemfile.lock
420
412
  - LICENSE
421
413
  - README.md
422
414
  - Rakefile
@@ -443,6 +435,7 @@ files:
443
435
  - features/configuration/hook_into.feature
444
436
  - features/configuration/ignore_request.feature
445
437
  - features/configuration/preserve_exact_body_bytes.feature
438
+ - features/configuration/query_parser.feature
446
439
  - features/configuration/uri_parser.feature
447
440
  - features/getting_started.md
448
441
  - features/hooks/after_http_request.feature
@@ -467,6 +460,7 @@ files:
467
460
  - features/request_matching/method.feature
468
461
  - features/request_matching/path.feature
469
462
  - features/request_matching/playback_repeats.feature
463
+ - features/request_matching/query.feature
470
464
  - features/request_matching/uri.feature
471
465
  - features/request_matching/uri_without_param.feature
472
466
  - features/step_definitions/cli_steps.rb
@@ -478,10 +472,8 @@ files:
478
472
  - features/test_frameworks/rspec_metadata.feature
479
473
  - features/test_frameworks/shoulda.feature
480
474
  - features/test_frameworks/test_unit.feature
481
- - gemfiles/typhoeus-new.gemfile
482
- - gemfiles/typhoeus-new.gemfile.lock
483
- - gemfiles/typhoeus-old.gemfile
484
- - gemfiles/typhoeus-old.gemfile.lock
475
+ - gemfiles/typhoeus_old.gemfile
476
+ - gemfiles/typhoeus_old.gemfile.lock
485
477
  - lib/vcr.rb
486
478
  - lib/vcr/cassette.rb
487
479
  - lib/vcr/cassette/erb_renderer.rb
@@ -571,9 +563,9 @@ files:
571
563
  - spec/vcr/version_spec.rb
572
564
  - spec/vcr_spec.rb
573
565
  - vcr.gemspec
574
- homepage: http://github.com/myronmarston/vcr
575
- licenses: []
576
-
566
+ homepage: http://github.com/vcr/vcr
567
+ licenses:
568
+ - MIT
577
569
  post_install_message:
578
570
  rdoc_options: []
579
571
 
@@ -628,6 +620,7 @@ test_files:
628
620
  - features/configuration/hook_into.feature
629
621
  - features/configuration/ignore_request.feature
630
622
  - features/configuration/preserve_exact_body_bytes.feature
623
+ - features/configuration/query_parser.feature
631
624
  - features/configuration/uri_parser.feature
632
625
  - features/getting_started.md
633
626
  - features/hooks/after_http_request.feature
@@ -652,6 +645,7 @@ test_files:
652
645
  - features/request_matching/method.feature
653
646
  - features/request_matching/path.feature
654
647
  - features/request_matching/playback_repeats.feature
648
+ - features/request_matching/query.feature
655
649
  - features/request_matching/uri.feature
656
650
  - features/request_matching/uri_without_param.feature
657
651
  - features/step_definitions/cli_steps.rb