vcr 1.3.1 → 1.3.2

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