vcr 2.3.0 → 2.4.0

Sign up to get free protection for your applications and to get access to all the features.
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