vcr 1.3.1 → 1.3.2

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 (72) hide show
  1. data/CHANGELOG.md +14 -2
  2. data/Gemfile +3 -0
  3. data/Gemfile.lock +20 -2
  4. data/README.md +6 -1
  5. data/Rakefile +6 -44
  6. data/benchmarks/http_stubbing_libraries.rb +4 -4
  7. data/cucumber.yml +14 -0
  8. data/features/README.md +21 -0
  9. data/features/cassettes/automatic_re_recording.feature +68 -0
  10. data/features/cassettes/dynamic_erb.feature +90 -0
  11. data/features/cassettes/format.feature +81 -0
  12. data/features/cassettes/no_cassette.feature +38 -0
  13. data/features/cassettes/record_modes/all.feature +78 -0
  14. data/features/cassettes/record_modes/new_episodes.feature +71 -0
  15. data/features/cassettes/record_modes/none.feature +65 -0
  16. data/features/cassettes/request_matching.feature +379 -0
  17. data/features/configuration/cassette_library_dir.feature +28 -0
  18. data/features/configuration/default_cassette_options.feature +80 -0
  19. data/features/configuration/ignore_localhost.feature +103 -0
  20. data/features/configuration/stub_with.feature +164 -0
  21. data/features/http_libraries/net_http.feature +137 -0
  22. data/features/step_definitions/cli_steps.rb +82 -0
  23. data/features/support/aruba_workaround/aruba_patches.rb +36 -0
  24. data/features/support/aruba_workaround/background_process.rb +4 -0
  25. data/features/support/env.rb +16 -102
  26. data/features/support/http_lib_filters.rb +37 -0
  27. data/features/support/vcr_cucumber_helpers.rb +34 -0
  28. data/features/test_frameworks/cucumber.feature +109 -0
  29. data/features/test_frameworks/rspec.feature +110 -0
  30. data/features/test_frameworks/shoulda.feature +64 -0
  31. data/features/test_frameworks/test_unit.feature +46 -0
  32. data/lib/vcr/cassette.rb +1 -1
  33. data/lib/vcr/structs.rb +64 -13
  34. data/lib/vcr/version.rb +1 -1
  35. data/{FullBuildRakeFile → script/FullBuildRakeFile} +0 -0
  36. data/script/full_build +1 -0
  37. data/spec/extensions/net_http_spec.rb +1 -1
  38. data/spec/spec_helper.rb +1 -1
  39. data/spec/structs_spec.rb +47 -16
  40. data/spec/support/vcr_localhost_server.rb +11 -5
  41. data/vcr.gemspec +2 -1
  42. metadata +82 -77
  43. data/features/fixtures/vcr_cassettes/1.9.1/cucumber_tags/regex_cassette.yml +0 -43
  44. data/features/fixtures/vcr_cassettes/1.9.1/cucumber_tags/replay_cassette1.yml +0 -43
  45. data/features/fixtures/vcr_cassettes/1.9.1/cucumber_tags/replay_cassette2.yml +0 -63
  46. data/features/fixtures/vcr_cassettes/1.9.1/cucumber_tags/replay_cassette3.yml +0 -85
  47. data/features/fixtures/vcr_cassettes/1.9.1/erb_cassette.yml +0 -36
  48. data/features/fixtures/vcr_cassettes/1.9.1/match_requests_on.yml +0 -35
  49. data/features/fixtures/vcr_cassettes/1.9.1/nested_replay_cassette.yml +0 -32
  50. data/features/fixtures/vcr_cassettes/1.9.1/not_the_real_response.yml +0 -43
  51. data/features/fixtures/vcr_cassettes/1.9.1/record_all.yml +0 -62
  52. data/features/fixtures/vcr_cassettes/1.9.1/replay_localhost_cassette.yml +0 -32
  53. data/features/fixtures/vcr_cassettes/not_1.9.1/cucumber_tags/regex_cassette.yml +0 -43
  54. data/features/fixtures/vcr_cassettes/not_1.9.1/cucumber_tags/replay_cassette1.yml +0 -43
  55. data/features/fixtures/vcr_cassettes/not_1.9.1/cucumber_tags/replay_cassette2.yml +0 -47
  56. data/features/fixtures/vcr_cassettes/not_1.9.1/cucumber_tags/replay_cassette3.yml +0 -85
  57. data/features/fixtures/vcr_cassettes/not_1.9.1/erb_cassette.yml +0 -36
  58. data/features/fixtures/vcr_cassettes/not_1.9.1/match_requests_on.yml +0 -35
  59. data/features/fixtures/vcr_cassettes/not_1.9.1/nested_replay_cassette.yml +0 -24
  60. data/features/fixtures/vcr_cassettes/not_1.9.1/not_the_real_response.yml +0 -43
  61. data/features/fixtures/vcr_cassettes/not_1.9.1/record_all.yml +0 -61
  62. data/features/fixtures/vcr_cassettes/not_1.9.1/replay_localhost_cassette.yml +0 -32
  63. data/features/http_client.feature +0 -16
  64. data/features/net_http.feature +0 -38
  65. data/features/record_response.feature +0 -95
  66. data/features/replay_recorded_response.feature +0 -96
  67. data/features/rspec.feature +0 -100
  68. data/features/step_definitions/http_client_steps.rb +0 -7
  69. data/features/step_definitions/net_http_steps.rb +0 -49
  70. data/features/step_definitions/vcr_steps.rb +0 -252
  71. data/features/webmock.feature +0 -26
  72. data/full_build +0 -1
@@ -0,0 +1,64 @@
1
+ Feature: Usage with shoulda
2
+
3
+ When using a test framework that provides setup and teardown hooks
4
+ (such as shoulda), you can use `VCR.insert_cassette` and
5
+ `VCR.eject_cassette` to use a cassette for some tests.
6
+
7
+ The first argument to `VCR.insert_cassette` should be the cassette
8
+ name; you can follow that with a hash of cassette options.
9
+
10
+ Note that you _must_ eject every cassette you insert; if you use
11
+ `VCR.insert_cassette` rather than wrapping code in `VCR.use_cassette`,
12
+ then it is your responsibility to ensure it is ejected, even if
13
+ errors occur.
14
+
15
+ Scenario: Use `VCR.insert_cassette` and `VCR.eject_cassette`
16
+ Given a file named "test/test_helper.rb" with:
17
+ """
18
+ require 'test/unit'
19
+ require 'shoulda'
20
+ require 'vcr_cucumber_helpers'
21
+
22
+ if ARGV.include?('--with-server')
23
+ start_sinatra_app(:port => 7777) do
24
+ get('/') { "Hello" }
25
+ end
26
+ end
27
+
28
+ require 'vcr'
29
+
30
+ VCR.config do |c|
31
+ c.stub_with :webmock
32
+ c.cassette_library_dir = 'test/fixtures/vcr_cassettes'
33
+ c.default_cassette_options = { :record => :new_episodes }
34
+ end
35
+ """
36
+ And a file named "test/vcr_example_test.rb" with:
37
+ """
38
+ require 'test_helper'
39
+
40
+ class VCRExampleTest < Test::Unit::TestCase
41
+ context 'using a VCR cassette' do
42
+ setup do
43
+ VCR.insert_cassette('shoulda_example')
44
+ end
45
+
46
+ should 'make an HTTP request' do
47
+ response = Net::HTTP.get_response('localhost', '/', 7777)
48
+ assert_equal "Hello", response.body
49
+ end
50
+
51
+ teardown do
52
+ VCR.eject_cassette
53
+ end
54
+ end
55
+ end
56
+ """
57
+ And the directory "test/fixtures/vcr_cassettes" does not exist
58
+ When I run "ruby -Itest test/vcr_example_test.rb -- --with-server"
59
+ Then it should pass with "1 tests, 1 assertions, 0 failures, 0 errors"
60
+ And the file "test/fixtures/vcr_cassettes/shoulda_example.yml" should contain "body: Hello"
61
+
62
+ # Run again without starting the sinatra server so the response will be replayed
63
+ When I run "ruby -Itest test/vcr_example_test.rb"
64
+ Then it should pass with "1 tests, 1 assertions, 0 failures, 0 errors"
@@ -0,0 +1,46 @@
1
+ Feature: Usage with Test::Unit
2
+
3
+ To use VCR with Test::Unit, wrap the body of any test method in
4
+ `VCR.use_cassette`.
5
+
6
+ Scenario: Use `VCR.use_cassette` in a test
7
+ Given a file named "test/test_helper.rb" with:
8
+ """
9
+ require 'test/unit'
10
+ require 'vcr_cucumber_helpers'
11
+
12
+ if ARGV.include?('--with-server')
13
+ start_sinatra_app(:port => 7777) do
14
+ get('/') { "Hello" }
15
+ end
16
+ end
17
+
18
+ require 'vcr'
19
+
20
+ VCR.config do |c|
21
+ c.stub_with :webmock
22
+ c.cassette_library_dir = 'test/fixtures/vcr_cassettes'
23
+ c.default_cassette_options = { :record => :new_episodes }
24
+ end
25
+ """
26
+ And a file named "test/vcr_example_test.rb" with:
27
+ """
28
+ require 'test_helper'
29
+
30
+ class VCRExampleTest < Test::Unit::TestCase
31
+ def test_use_vcr
32
+ VCR.use_cassette('test_unit_example') do
33
+ response = Net::HTTP.get_response('localhost', '/', 7777)
34
+ assert_equal "Hello", response.body
35
+ end
36
+ end
37
+ end
38
+ """
39
+ And the directory "test/fixtures/vcr_cassettes" does not exist
40
+ When I run "ruby -Itest test/vcr_example_test.rb -- --with-server"
41
+ Then it should pass with "1 tests, 1 assertions, 0 failures, 0 errors"
42
+ And the file "test/fixtures/vcr_cassettes/test_unit_example.yml" should contain "body: Hello"
43
+
44
+ # Run again without starting the sinatra server so the response will be replayed
45
+ When I run "ruby -Itest test/vcr_example_test.rb"
46
+ Then it should pass with "1 tests, 1 assertions, 0 failures, 0 errors"
@@ -9,7 +9,7 @@ module VCR
9
9
 
10
10
  VALID_RECORD_MODES = [:all, :none, :new_episodes].freeze
11
11
 
12
- attr_reader :name, :record_mode, :match_requests_on
12
+ attr_reader :name, :record_mode, :match_requests_on, :erb, :re_record_interval
13
13
 
14
14
  def initialize(name, options = {})
15
15
  options = VCR::Config.default_cassette_options.merge(options)
@@ -1,7 +1,39 @@
1
1
  require 'forwardable'
2
2
 
3
3
  module VCR
4
+ module BodyNormalizer
5
+ def initialize(*args)
6
+ super
7
+ normalize_body
8
+ end
9
+
10
+ private
11
+
12
+ def normalize_body
13
+ # Ensure that the body is a raw string, in case the string instance
14
+ # has been subclassed or extended with additional instance variables
15
+ # or attributes, so that it is serialized to YAML as a raw string.
16
+ # This is needed for rest-client. See this ticket for more info:
17
+ # http://github.com/myronmarston/vcr/issues/4
18
+ self.body = case body
19
+ when nil, ''; nil
20
+ else String.new(body)
21
+ end
22
+ end
23
+ end
24
+
4
25
  module HeaderNormalizer
26
+ # These headers get added by the various HTTP clients automatically,
27
+ # and we don't care about them. We store the headers for the purposes
28
+ # of request matching, and we only care to match on headers users
29
+ # explicitly set.
30
+ HEADERS_TO_SKIP = {
31
+ 'connection' => %w[ close Keep-Alive ],
32
+ 'accept' => %w[ */* ],
33
+ 'expect' => [''],
34
+ 'user-agent' => ["Typhoeus - http://github.com/pauldix/typhoeus/tree/master", 'Ruby']
35
+ }
36
+
5
37
  def initialize(*args)
6
38
  super
7
39
  normalize_headers
@@ -9,18 +41,30 @@ module VCR
9
41
 
10
42
  private
11
43
 
44
+ def important_header_values(k, values)
45
+ skip_values = HEADERS_TO_SKIP[k] || []
46
+ values - skip_values
47
+ end
48
+
12
49
  def normalize_headers
13
50
  new_headers = {}
14
51
 
15
52
  headers.each do |k, v|
16
- new_headers[k.downcase] = case v
53
+ k = k.downcase
54
+
55
+ val_array = case v
17
56
  when Array then v
18
57
  when nil then []
19
58
  else [v]
20
59
  end
60
+
61
+ important_vals = important_header_values(k, val_array)
62
+ next unless important_vals.size > 0
63
+
64
+ new_headers[k] = important_vals
21
65
  end if headers
22
66
 
23
- self.headers = new_headers
67
+ self.headers = new_headers.empty? ? nil : new_headers
24
68
  end
25
69
  end
26
70
 
@@ -55,9 +99,24 @@ module VCR
55
99
  end
56
100
  end
57
101
 
102
+ module StatusMessageNormalizer
103
+ def initialize(*args)
104
+ super
105
+ normalize_status_message
106
+ end
107
+
108
+ private
109
+
110
+ def normalize_status_message
111
+ self.message = message.strip if message
112
+ self.message = nil if message == ''
113
+ end
114
+ end
115
+
58
116
  class Request < Struct.new(:method, :uri, :body, :headers)
59
117
  include HeaderNormalizer
60
118
  include URINormalizer
119
+ include BodyNormalizer
61
120
 
62
121
  def self.from_net_http_request(net_http, request)
63
122
  new(
@@ -74,6 +133,8 @@ module VCR
74
133
  end
75
134
 
76
135
  class ResponseStatus < Struct.new(:code, :message)
136
+ include StatusMessageNormalizer
137
+
77
138
  def self.from_net_http_response(response)
78
139
  new(response.code.to_i, response.message)
79
140
  end
@@ -81,17 +142,7 @@ module VCR
81
142
 
82
143
  class Response < Struct.new(:status, :headers, :body, :http_version)
83
144
  include HeaderNormalizer
84
-
85
- def initialize(*args)
86
- super
87
-
88
- # Ensure that the body is a raw string, in case the string instance
89
- # has been subclassed or extended with additional instance variables
90
- # or attributes, so that it is serialized to YAML as a raw string.
91
- # This is needed for rest-client. See this ticket for more info:
92
- # http://github.com/myronmarston/vcr/issues/4
93
- self.body = String.new(body) if body
94
- end
145
+ include BodyNormalizer
95
146
 
96
147
  def self.from_net_http_response(response)
97
148
  new(
@@ -3,7 +3,7 @@ module VCR
3
3
 
4
4
  def version
5
5
  @version ||= begin
6
- string = '1.3.1'
6
+ string = '1.3.2'
7
7
 
8
8
  def string.parts; VCR.version.split('.').map { |p| p.to_i }; end
9
9
  def string.major; parts[0]; end
@@ -0,0 +1 @@
1
+ rvm 1.8.6,1.8.7,1.9.1,1.9.2,ree,jruby,rbx-head rake -f script/FullBuildRakeFile build | tee tmp/full_build.out
@@ -43,7 +43,7 @@ describe "Net::HTTP Extensions" do
43
43
  interaction.request.headers.should_not have_key('content-type')
44
44
  interaction.request.headers.should_not have_key('host')
45
45
  end
46
- Net::HTTP.new('example.com', 80).send_request('POST', '/', '', {})
46
+ Net::HTTP.new('example.com', 80).send_request('POST', '/', '', { 'x-http-user' => 'me' })
47
47
  end
48
48
 
49
49
  it "records headers for which Net::HTTP usually sets defaults when the user manually sets their values" do
@@ -9,7 +9,7 @@ YAML_SERIALIZATION_VERSION = RUBY_VERSION == '1.9.1' ? '1.9.1' : 'not_1.9.1'
9
9
 
10
10
  # Requires supporting files with custom matchers and macros, etc,
11
11
  # in ./support/ and its subdirectories.
12
- Dir[File.expand_path(File.join(File.dirname(__FILE__),'support','**','*.rb'))].each {|f| require f}
12
+ Dir[File.expand_path(File.join(File.dirname(__FILE__),'support','**','*.rb'))].each {|f| require File.join("support", File.basename(f))}
13
13
 
14
14
  require 'vcr'
15
15
  require 'monkey_patches'
@@ -2,20 +2,38 @@ require 'spec_helper'
2
2
 
3
3
  shared_examples_for "a header normalizer" do
4
4
  let(:instance) do
5
- with_headers('Some_Header' => 'value1', 'aNother' => ['a', 'b'], 'third' => [], 'FOURTH' => nil)
5
+ with_headers('Some_Header' => 'value1', 'aNother' => ['a', 'b'], 'third' => [], 'fourth' => nil)
6
6
  end
7
7
 
8
8
  it 'normalizes the hash to lower case keys and arrays of values' do
9
- instance.headers.should == {
10
- 'some_header' => ['value1'],
11
- 'another' => ['a', 'b'],
12
- 'third' => [],
13
- 'fourth' => []
14
- }
9
+ instance.headers['some_header'].should == ['value1']
10
+ instance.headers['another'].should == ['a', 'b']
15
11
  end
16
12
 
17
- it 'set nil header to an empty hash' do
18
- with_headers(nil).headers.should == {}
13
+ it 'removes empty headers' do
14
+ instance.headers.should_not have_key('third')
15
+ instance.headers.should_not have_key('fourth')
16
+ end
17
+
18
+ it 'filters out unimportant default values set by the HTTP library' do
19
+ instance = with_headers('accept' => ['*/*'], 'connection' => 'close', 'http-user' => ['foo'], 'expect' => ['', 'bar'])
20
+ instance.headers.should == { 'http-user' => ['foo'], 'expect' => ['bar'] }
21
+ end
22
+
23
+ it 'sets empty hash header to nil' do
24
+ with_headers({}).headers.should be_nil
25
+ end
26
+ end
27
+
28
+ shared_examples_for "a body normalizer" do
29
+ it 'sets empty string to nil' do
30
+ instance('').body.should be_nil
31
+ end
32
+
33
+ it "ensures the body is serialized to yaml as a raw string" do
34
+ body = "My String"
35
+ body.instance_variable_set(:@foo, 7)
36
+ instance(body).body.to_yaml.should == "My String".to_yaml
19
37
  end
20
38
  end
21
39
 
@@ -67,7 +85,7 @@ describe VCR::Request do
67
85
  it { should be_instance_of(VCR::Request) }
68
86
  its(:method) { should == :post }
69
87
  its(:body) { should == 'id=7' }
70
- its(:headers) { should == { "accept" => ["*/*"], "content-type" => ["application/x-www-form-urlencoded"] } }
88
+ its(:headers) { should == { "content-type" => ["application/x-www-form-urlencoded"] } }
71
89
 
72
90
  it 'sets the uri using the http_stubbing_adapter.request_uri' do
73
91
  VCR.http_stubbing_adapter.should_receive(:request_uri).with(net_http, request).and_return('foo/bar')
@@ -80,6 +98,12 @@ describe VCR::Request do
80
98
  described_class.new(:get, 'http://example.com/', nil, headers)
81
99
  end
82
100
  end
101
+
102
+ it_behaves_like 'a body normalizer' do
103
+ def instance(body)
104
+ described_class.new(:get, 'http://example.com/', body, {})
105
+ end
106
+ end
83
107
  end
84
108
 
85
109
  describe VCR::ResponseStatus do
@@ -91,6 +115,15 @@ describe VCR::ResponseStatus do
91
115
  its(:code) { should == 200 }
92
116
  its(:message) { should == 'OK' }
93
117
  end
118
+
119
+ it 'chomps leading and trailing spaces on the status message' do
120
+ described_class.new(200, ' OK ').message.should == 'OK'
121
+ end
122
+
123
+ it 'sets status message to nil when it is the empty string' do
124
+ described_class.new(200, '').message.should be_nil
125
+ described_class.new(200, ' ').message.should be_nil
126
+ end
94
127
  end
95
128
 
96
129
  describe VCR::Response do
@@ -103,7 +136,6 @@ describe VCR::Response do
103
136
  its(:http_version) { should == '1.1' }
104
137
  its(:headers) { should == {
105
138
  "last-modified" => ['Tue, 15 Nov 2005 13:24:10 GMT'],
106
- "connection" => ['close'],
107
139
  "etag" => ["\"24ec5-1b6-4059a80bfd280\""],
108
140
  "content-type" => ["text/html; charset=UTF-8"],
109
141
  "date" => ['Wed, 31 Mar 2010 02:43:26 GMT'],
@@ -125,11 +157,10 @@ describe VCR::Response do
125
157
  end
126
158
  end
127
159
 
128
- it "ensures the body is serialized to yaml as a raw string" do
129
- body = "My String"
130
- body.instance_variable_set(:@foo, 7)
131
- instance = described_class.new(:status, {}, body, :version)
132
- instance.body.to_yaml.should == "My String".to_yaml
160
+ it_behaves_like 'a body normalizer' do
161
+ def instance(body)
162
+ described_class.new(:status, {}, body, '1.1')
163
+ end
133
164
  end
134
165
  end
135
166
 
@@ -1,5 +1,6 @@
1
1
  require 'rack'
2
2
  require 'rack/handler/webrick'
3
+ require 'net/http'
3
4
 
4
5
  # The code for this is inspired by Capybara's server:
5
6
  # http://github.com/jnicklas/capybara/blob/0.3.9/lib/capybara/server.rb
@@ -21,8 +22,8 @@ module VCR
21
22
 
22
23
  attr_reader :port
23
24
 
24
- def initialize(rack_app)
25
- @port = find_available_port
25
+ def initialize(rack_app, port = nil)
26
+ @port = port || find_available_port
26
27
  @rack_app = rack_app
27
28
  concurrently { boot }
28
29
  wait_until(10, "Boot failed.") { booted? }
@@ -53,9 +54,7 @@ module VCR
53
54
  end
54
55
 
55
56
  def concurrently
56
- if RUBY_INTERPRETER == :mri
57
- # Patron times out when the server is running in a separate thread in the same process,
58
- # so use a separate process.
57
+ if should_use_subprocess?
59
58
  pid = Process.fork do
60
59
  yield
61
60
  exit # manually exit; otherwise this sub-process will re-run the specs that haven't run yet.
@@ -77,6 +76,13 @@ module VCR
77
76
  end
78
77
  end
79
78
 
79
+ def should_use_subprocess?
80
+ # Patron times out when the server is running in a separate thread in the same process,
81
+ # so use a separate process.
82
+ # In all other cases, we can use a thread (it's faster!)
83
+ defined?(Patron)
84
+ end
85
+
80
86
  def wait_until(timeout, error_message, &block)
81
87
  start_time = Time.now
82
88
 
@@ -32,7 +32,8 @@ Gem::Specification.new do |s|
32
32
  'httpclient' => '~> 2.1.5.2',
33
33
 
34
34
  'timecop' => '~> 0.3.5',
35
- 'rack' => '1.1.0'
35
+ 'rack' => '1.1.0',
36
+ 'sinatra' => '~> 1.1.0'
36
37
  }.each do |lib, version|
37
38
  s.add_development_dependency lib, version
38
39
  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: 25
4
+ hash: 31
5
5
  prerelease: false
6
6
  segments:
7
7
  - 1
8
8
  - 3
9
- - 1
10
- version: 1.3.1
9
+ - 2
10
+ version: 1.3.2
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: 2010-11-11 00:00:00 -08:00
18
+ date: 2010-11-16 00:00:00 -08:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -133,6 +133,22 @@ dependencies:
133
133
  prerelease: false
134
134
  - !ruby/object:Gem::Dependency
135
135
  version_requirements: &id008 !ruby/object:Gem::Requirement
136
+ none: false
137
+ requirements:
138
+ - - ~>
139
+ - !ruby/object:Gem::Version
140
+ hash: 19
141
+ segments:
142
+ - 1
143
+ - 1
144
+ - 0
145
+ version: 1.1.0
146
+ requirement: *id008
147
+ type: :development
148
+ name: sinatra
149
+ prerelease: false
150
+ - !ruby/object:Gem::Dependency
151
+ version_requirements: &id009 !ruby/object:Gem::Requirement
136
152
  none: false
137
153
  requirements:
138
154
  - - ~>
@@ -143,12 +159,12 @@ dependencies:
143
159
  - 0
144
160
  - 0
145
161
  version: 1.0.0
146
- requirement: *id008
162
+ requirement: *id009
147
163
  type: :development
148
164
  name: bundler
149
165
  prerelease: false
150
166
  - !ruby/object:Gem::Dependency
151
- version_requirements: &id009 !ruby/object:Gem::Requirement
167
+ version_requirements: &id010 !ruby/object:Gem::Requirement
152
168
  none: false
153
169
  requirements:
154
170
  - - ~>
@@ -159,12 +175,12 @@ dependencies:
159
175
  - 9
160
176
  - 4
161
177
  version: 0.9.4
162
- requirement: *id009
178
+ requirement: *id010
163
179
  type: :development
164
180
  name: cucumber
165
181
  prerelease: false
166
182
  - !ruby/object:Gem::Dependency
167
- version_requirements: &id010 !ruby/object:Gem::Requirement
183
+ version_requirements: &id011 !ruby/object:Gem::Requirement
168
184
  none: false
169
185
  requirements:
170
186
  - - ~>
@@ -175,12 +191,12 @@ dependencies:
175
191
  - 6
176
192
  - 0
177
193
  version: 1.6.0
178
- requirement: *id010
194
+ requirement: *id011
179
195
  type: :development
180
196
  name: webmock
181
197
  prerelease: false
182
198
  - !ruby/object:Gem::Dependency
183
- version_requirements: &id011 !ruby/object:Gem::Requirement
199
+ version_requirements: &id012 !ruby/object:Gem::Requirement
184
200
  none: false
185
201
  requirements:
186
202
  - - ~>
@@ -191,12 +207,12 @@ dependencies:
191
207
  - 7
192
208
  - 8
193
209
  version: 0.7.8
194
- requirement: *id011
210
+ requirement: *id012
195
211
  type: :development
196
212
  name: curb
197
213
  prerelease: false
198
214
  - !ruby/object:Gem::Dependency
199
- version_requirements: &id012 !ruby/object:Gem::Requirement
215
+ version_requirements: &id013 !ruby/object:Gem::Requirement
200
216
  none: false
201
217
  requirements:
202
218
  - - ~>
@@ -207,12 +223,12 @@ dependencies:
207
223
  - 4
208
224
  - 6
209
225
  version: 0.4.6
210
- requirement: *id012
226
+ requirement: *id013
211
227
  type: :development
212
228
  name: patron
213
229
  prerelease: false
214
230
  - !ruby/object:Gem::Dependency
215
- version_requirements: &id013 !ruby/object:Gem::Requirement
231
+ version_requirements: &id014 !ruby/object:Gem::Requirement
216
232
  none: false
217
233
  requirements:
218
234
  - - ~>
@@ -223,12 +239,12 @@ dependencies:
223
239
  - 2
224
240
  - 7
225
241
  version: 0.2.7
226
- requirement: *id013
242
+ requirement: *id014
227
243
  type: :development
228
244
  name: em-http-request
229
245
  prerelease: false
230
246
  - !ruby/object:Gem::Dependency
231
- version_requirements: &id014 !ruby/object:Gem::Requirement
247
+ version_requirements: &id015 !ruby/object:Gem::Requirement
232
248
  none: false
233
249
  requirements:
234
250
  - - ~>
@@ -239,7 +255,7 @@ dependencies:
239
255
  - 2
240
256
  - 0
241
257
  version: 0.2.0
242
- requirement: *id014
258
+ requirement: *id015
243
259
  type: :development
244
260
  name: typhoeus
245
261
  prerelease: false
@@ -256,7 +272,6 @@ files:
256
272
  - .gitignore
257
273
  - .gitmodules
258
274
  - CHANGELOG.md
259
- - FullBuildRakeFile
260
275
  - Gemfile
261
276
  - Gemfile.lock
262
277
  - Guardfile
@@ -265,37 +280,31 @@ files:
265
280
  - Rakefile
266
281
  - TODO.md
267
282
  - benchmarks/http_stubbing_libraries.rb
268
- - features/fixtures/vcr_cassettes/1.9.1/cucumber_tags/regex_cassette.yml
269
- - features/fixtures/vcr_cassettes/1.9.1/cucumber_tags/replay_cassette1.yml
270
- - features/fixtures/vcr_cassettes/1.9.1/cucumber_tags/replay_cassette2.yml
271
- - features/fixtures/vcr_cassettes/1.9.1/cucumber_tags/replay_cassette3.yml
272
- - features/fixtures/vcr_cassettes/1.9.1/erb_cassette.yml
273
- - features/fixtures/vcr_cassettes/1.9.1/match_requests_on.yml
274
- - features/fixtures/vcr_cassettes/1.9.1/nested_replay_cassette.yml
275
- - features/fixtures/vcr_cassettes/1.9.1/not_the_real_response.yml
276
- - features/fixtures/vcr_cassettes/1.9.1/record_all.yml
277
- - features/fixtures/vcr_cassettes/1.9.1/replay_localhost_cassette.yml
278
- - features/fixtures/vcr_cassettes/not_1.9.1/cucumber_tags/regex_cassette.yml
279
- - features/fixtures/vcr_cassettes/not_1.9.1/cucumber_tags/replay_cassette1.yml
280
- - features/fixtures/vcr_cassettes/not_1.9.1/cucumber_tags/replay_cassette2.yml
281
- - features/fixtures/vcr_cassettes/not_1.9.1/cucumber_tags/replay_cassette3.yml
282
- - features/fixtures/vcr_cassettes/not_1.9.1/erb_cassette.yml
283
- - features/fixtures/vcr_cassettes/not_1.9.1/match_requests_on.yml
284
- - features/fixtures/vcr_cassettes/not_1.9.1/nested_replay_cassette.yml
285
- - features/fixtures/vcr_cassettes/not_1.9.1/not_the_real_response.yml
286
- - features/fixtures/vcr_cassettes/not_1.9.1/record_all.yml
287
- - features/fixtures/vcr_cassettes/not_1.9.1/replay_localhost_cassette.yml
288
- - features/http_client.feature
289
- - features/net_http.feature
290
- - features/record_response.feature
291
- - features/replay_recorded_response.feature
292
- - features/rspec.feature
293
- - features/step_definitions/http_client_steps.rb
294
- - features/step_definitions/net_http_steps.rb
295
- - features/step_definitions/vcr_steps.rb
283
+ - cucumber.yml
284
+ - features/README.md
285
+ - features/cassettes/automatic_re_recording.feature
286
+ - features/cassettes/dynamic_erb.feature
287
+ - features/cassettes/format.feature
288
+ - features/cassettes/no_cassette.feature
289
+ - features/cassettes/record_modes/all.feature
290
+ - features/cassettes/record_modes/new_episodes.feature
291
+ - features/cassettes/record_modes/none.feature
292
+ - features/cassettes/request_matching.feature
293
+ - features/configuration/cassette_library_dir.feature
294
+ - features/configuration/default_cassette_options.feature
295
+ - features/configuration/ignore_localhost.feature
296
+ - features/configuration/stub_with.feature
297
+ - features/http_libraries/net_http.feature
298
+ - features/step_definitions/cli_steps.rb
299
+ - features/support/aruba_workaround/aruba_patches.rb
300
+ - features/support/aruba_workaround/background_process.rb
296
301
  - features/support/env.rb
297
- - features/webmock.feature
298
- - full_build
302
+ - features/support/http_lib_filters.rb
303
+ - features/support/vcr_cucumber_helpers.rb
304
+ - features/test_frameworks/cucumber.feature
305
+ - features/test_frameworks/rspec.feature
306
+ - features/test_frameworks/shoulda.feature
307
+ - features/test_frameworks/test_unit.feature
299
308
  - lib/vcr.rb
300
309
  - lib/vcr/basic_object.rb
301
310
  - lib/vcr/cassette.rb
@@ -315,6 +324,8 @@ files:
315
324
  - lib/vcr/rspec.rb
316
325
  - lib/vcr/structs.rb
317
326
  - lib/vcr/version.rb
327
+ - script/FullBuildRakeFile
328
+ - script/full_build
318
329
  - spec/cassette_spec.rb
319
330
  - spec/config_spec.rb
320
331
  - spec/cucumber_tags_spec.rb
@@ -403,36 +414,30 @@ signing_key:
403
414
  specification_version: 3
404
415
  summary: Record your test suite's HTTP interactions and replay them during future test runs for fast, deterministic, accurate tests.
405
416
  test_files:
406
- - features/fixtures/vcr_cassettes/1.9.1/cucumber_tags/regex_cassette.yml
407
- - features/fixtures/vcr_cassettes/1.9.1/cucumber_tags/replay_cassette1.yml
408
- - features/fixtures/vcr_cassettes/1.9.1/cucumber_tags/replay_cassette2.yml
409
- - features/fixtures/vcr_cassettes/1.9.1/cucumber_tags/replay_cassette3.yml
410
- - features/fixtures/vcr_cassettes/1.9.1/erb_cassette.yml
411
- - features/fixtures/vcr_cassettes/1.9.1/match_requests_on.yml
412
- - features/fixtures/vcr_cassettes/1.9.1/nested_replay_cassette.yml
413
- - features/fixtures/vcr_cassettes/1.9.1/not_the_real_response.yml
414
- - features/fixtures/vcr_cassettes/1.9.1/record_all.yml
415
- - features/fixtures/vcr_cassettes/1.9.1/replay_localhost_cassette.yml
416
- - features/fixtures/vcr_cassettes/not_1.9.1/cucumber_tags/regex_cassette.yml
417
- - features/fixtures/vcr_cassettes/not_1.9.1/cucumber_tags/replay_cassette1.yml
418
- - features/fixtures/vcr_cassettes/not_1.9.1/cucumber_tags/replay_cassette2.yml
419
- - features/fixtures/vcr_cassettes/not_1.9.1/cucumber_tags/replay_cassette3.yml
420
- - features/fixtures/vcr_cassettes/not_1.9.1/erb_cassette.yml
421
- - features/fixtures/vcr_cassettes/not_1.9.1/match_requests_on.yml
422
- - features/fixtures/vcr_cassettes/not_1.9.1/nested_replay_cassette.yml
423
- - features/fixtures/vcr_cassettes/not_1.9.1/not_the_real_response.yml
424
- - features/fixtures/vcr_cassettes/not_1.9.1/record_all.yml
425
- - features/fixtures/vcr_cassettes/not_1.9.1/replay_localhost_cassette.yml
426
- - features/http_client.feature
427
- - features/net_http.feature
428
- - features/record_response.feature
429
- - features/replay_recorded_response.feature
430
- - features/rspec.feature
431
- - features/step_definitions/http_client_steps.rb
432
- - features/step_definitions/net_http_steps.rb
433
- - features/step_definitions/vcr_steps.rb
417
+ - features/README.md
418
+ - features/cassettes/automatic_re_recording.feature
419
+ - features/cassettes/dynamic_erb.feature
420
+ - features/cassettes/format.feature
421
+ - features/cassettes/no_cassette.feature
422
+ - features/cassettes/record_modes/all.feature
423
+ - features/cassettes/record_modes/new_episodes.feature
424
+ - features/cassettes/record_modes/none.feature
425
+ - features/cassettes/request_matching.feature
426
+ - features/configuration/cassette_library_dir.feature
427
+ - features/configuration/default_cassette_options.feature
428
+ - features/configuration/ignore_localhost.feature
429
+ - features/configuration/stub_with.feature
430
+ - features/http_libraries/net_http.feature
431
+ - features/step_definitions/cli_steps.rb
432
+ - features/support/aruba_workaround/aruba_patches.rb
433
+ - features/support/aruba_workaround/background_process.rb
434
434
  - features/support/env.rb
435
- - features/webmock.feature
435
+ - features/support/http_lib_filters.rb
436
+ - features/support/vcr_cucumber_helpers.rb
437
+ - features/test_frameworks/cucumber.feature
438
+ - features/test_frameworks/rspec.feature
439
+ - features/test_frameworks/shoulda.feature
440
+ - features/test_frameworks/test_unit.feature
436
441
  - spec/cassette_spec.rb
437
442
  - spec/config_spec.rb
438
443
  - spec/cucumber_tags_spec.rb