vcr 2.1.1 → 2.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.travis.yml +2 -1
- data/CHANGELOG.md +58 -1
- data/Gemfile +0 -6
- data/README.md +12 -3
- data/Rakefile +2 -2
- data/features/.nav +2 -0
- data/features/cassettes/allow_unused_http_interactions.feature +86 -0
- data/features/cassettes/naming.feature +3 -2
- data/features/cassettes/persistence.feature +63 -0
- data/features/configuration/debug_logging.feature +3 -3
- data/features/configuration/ignore_request.feature +1 -1
- data/features/hooks/after_http_request.feature +1 -1
- data/features/step_definitions/cli_steps.rb +33 -0
- data/features/support/env.rb +0 -1
- data/lib/vcr.rb +13 -0
- data/lib/vcr/cassette.rb +57 -44
- data/lib/vcr/cassette/{reader.rb → erb_renderer.rb} +9 -11
- data/lib/vcr/cassette/http_interaction_list.rb +18 -0
- data/lib/vcr/cassette/persisters.rb +42 -0
- data/lib/vcr/cassette/persisters/file_system.rb +60 -0
- data/lib/vcr/cassette/serializers.rb +1 -1
- data/lib/vcr/cassette/serializers/json.rb +1 -1
- data/lib/vcr/cassette/serializers/psych.rb +1 -1
- data/lib/vcr/cassette/serializers/syck.rb +1 -1
- data/lib/vcr/cassette/serializers/yaml.rb +1 -1
- data/lib/vcr/configuration.rb +49 -25
- data/lib/vcr/errors.rb +6 -0
- data/lib/vcr/library_hooks/excon.rb +1 -1
- data/lib/vcr/library_hooks/fakeweb.rb +16 -3
- data/lib/vcr/library_hooks/faraday.rb +13 -0
- data/lib/vcr/library_hooks/typhoeus.rb +5 -1
- data/lib/vcr/library_hooks/webmock.rb +90 -35
- data/lib/vcr/middleware/faraday.rb +12 -4
- data/lib/vcr/request_handler.rb +10 -2
- data/lib/vcr/structs.rb +31 -7
- data/lib/vcr/version.rb +1 -1
- data/script/ci.sh +14 -0
- data/spec/spec_helper.rb +8 -1
- data/spec/support/shared_example_groups/hook_into_http_library.rb +31 -1
- data/spec/vcr/cassette/{reader_spec.rb → erb_renderer_spec.rb} +15 -21
- data/spec/vcr/cassette/http_interaction_list_spec.rb +15 -0
- data/spec/vcr/cassette/persisters/file_system_spec.rb +64 -0
- data/spec/vcr/cassette/persisters_spec.rb +39 -0
- data/spec/vcr/cassette/serializers_spec.rb +4 -3
- data/spec/vcr/cassette_spec.rb +65 -41
- data/spec/vcr/configuration_spec.rb +33 -2
- data/spec/vcr/library_hooks/fakeweb_spec.rb +11 -0
- data/spec/vcr/library_hooks/faraday_spec.rb +24 -0
- data/spec/vcr/library_hooks/webmock_spec.rb +82 -2
- data/spec/vcr/middleware/faraday_spec.rb +32 -0
- data/spec/vcr/structs_spec.rb +60 -20
- data/spec/vcr/util/hooks_spec.rb +7 -0
- data/spec/vcr_spec.rb +7 -0
- data/vcr.gemspec +2 -2
- metadata +31 -26
- data/Guardfile +0 -9
- data/script/FullBuildRakeFile +0 -56
- data/script/full_build +0 -1
- data/script/spec +0 -1
data/spec/vcr/util/hooks_spec.rb
CHANGED
@@ -46,6 +46,13 @@ describe VCR::Hooks::FilteredHook do
|
|
46
46
|
filter_args.should eq([3, 5])
|
47
47
|
end
|
48
48
|
|
49
|
+
it 'handles splat args properly' do
|
50
|
+
filter_args = nil
|
51
|
+
subject.filters = lambda { |*args| filter_args = args; false }
|
52
|
+
subject.conditionally_invoke(3, 5)
|
53
|
+
filter_args.should eq([3, 5])
|
54
|
+
end
|
55
|
+
|
49
56
|
it 'forwards only as many arguments as the filter blocks accept' do
|
50
57
|
args1 = args2 = nil
|
51
58
|
subject.filters = [
|
data/spec/vcr_spec.rb
CHANGED
@@ -181,6 +181,13 @@ describe VCR do
|
|
181
181
|
end
|
182
182
|
end
|
183
183
|
|
184
|
+
describe ".cassette_persisters" do
|
185
|
+
it "always returns the same memoized Cassette::Persisters instance" do
|
186
|
+
VCR.cassette_persisters.should be_a(VCR::Cassette::Persisters)
|
187
|
+
VCR.cassette_persisters.should be(VCR.cassette_persisters)
|
188
|
+
end
|
189
|
+
end
|
190
|
+
|
184
191
|
describe '.configuration' do
|
185
192
|
it 'returns the configuration object' do
|
186
193
|
VCR.configuration.should be_a(VCR::Configuration)
|
data/vcr.gemspec
CHANGED
@@ -30,7 +30,7 @@ Gem::Specification.new do |s|
|
|
30
30
|
s.add_development_dependency 'webmock', '~> 1.8.3'
|
31
31
|
|
32
32
|
s.add_development_dependency 'faraday', '~> 0.8.0.rc2'
|
33
|
-
s.add_development_dependency 'httpclient', '~> 2.
|
33
|
+
s.add_development_dependency 'httpclient', '~> 2.2'
|
34
34
|
s.add_development_dependency 'excon', '>= 0.11.0', '< 1.0'
|
35
35
|
|
36
36
|
s.add_development_dependency 'timecop', '~> 0.3.5'
|
@@ -38,8 +38,8 @@ Gem::Specification.new do |s|
|
|
38
38
|
s.add_development_dependency 'sinatra', '~> 1.3.2'
|
39
39
|
s.add_development_dependency 'multi_json', '~> 1.0.3'
|
40
40
|
s.add_development_dependency 'json', '~> 1.6.5'
|
41
|
-
s.add_development_dependency 'limited_red', '~> 0.3.9'
|
42
41
|
s.add_development_dependency 'simplecov', '~> 0.5.3'
|
42
|
+
s.add_development_dependency 'redis', '~> 2.2.2'
|
43
43
|
|
44
44
|
unless RUBY_PLATFORM == 'java'
|
45
45
|
s.add_development_dependency 'patron', '~> 0.4.15'
|
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:
|
4
|
+
hash: 7
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 2
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 2.
|
8
|
+
- 2
|
9
|
+
- 0
|
10
|
+
version: 2.2.0
|
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: 2012-
|
18
|
+
date: 2012-05-31 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
version_requirements: &id001 !ruby/object:Gem::Requirement
|
@@ -169,13 +169,11 @@ dependencies:
|
|
169
169
|
requirements:
|
170
170
|
- - ~>
|
171
171
|
- !ruby/object:Gem::Version
|
172
|
-
hash:
|
172
|
+
hash: 7
|
173
173
|
segments:
|
174
174
|
- 2
|
175
|
-
- 1
|
176
|
-
- 5
|
177
175
|
- 2
|
178
|
-
version: 2.
|
176
|
+
version: "2.2"
|
179
177
|
name: httpclient
|
180
178
|
type: :development
|
181
179
|
prerelease: false
|
@@ -289,13 +287,13 @@ dependencies:
|
|
289
287
|
requirements:
|
290
288
|
- - ~>
|
291
289
|
- !ruby/object:Gem::Version
|
292
|
-
hash:
|
290
|
+
hash: 13
|
293
291
|
segments:
|
294
292
|
- 0
|
293
|
+
- 5
|
295
294
|
- 3
|
296
|
-
|
297
|
-
|
298
|
-
name: limited_red
|
295
|
+
version: 0.5.3
|
296
|
+
name: simplecov
|
299
297
|
type: :development
|
300
298
|
prerelease: false
|
301
299
|
requirement: *id017
|
@@ -305,13 +303,13 @@ dependencies:
|
|
305
303
|
requirements:
|
306
304
|
- - ~>
|
307
305
|
- !ruby/object:Gem::Version
|
308
|
-
hash:
|
306
|
+
hash: 3
|
309
307
|
segments:
|
310
|
-
-
|
311
|
-
-
|
312
|
-
-
|
313
|
-
version:
|
314
|
-
name:
|
308
|
+
- 2
|
309
|
+
- 2
|
310
|
+
- 2
|
311
|
+
version: 2.2.2
|
312
|
+
name: redis
|
315
313
|
type: :development
|
316
314
|
prerelease: false
|
317
315
|
requirement: *id018
|
@@ -414,7 +412,6 @@ files:
|
|
414
412
|
- CHANGELOG.md
|
415
413
|
- CONTRIBUTING.md
|
416
414
|
- Gemfile
|
417
|
-
- Guardfile
|
418
415
|
- LICENSE
|
419
416
|
- README.md
|
420
417
|
- Rakefile
|
@@ -423,6 +420,7 @@ files:
|
|
423
420
|
- cucumber.yml
|
424
421
|
- features/.nav
|
425
422
|
- features/about_these_examples.md
|
423
|
+
- features/cassettes/allow_unused_http_interactions.feature
|
426
424
|
- features/cassettes/automatic_re_recording.feature
|
427
425
|
- features/cassettes/decompress.feature
|
428
426
|
- features/cassettes/dynamic_erb.feature
|
@@ -430,6 +428,7 @@ files:
|
|
430
428
|
- features/cassettes/format.feature
|
431
429
|
- features/cassettes/naming.feature
|
432
430
|
- features/cassettes/no_cassette.feature
|
431
|
+
- features/cassettes/persistence.feature
|
433
432
|
- features/cassettes/update_content_length_header.feature
|
434
433
|
- features/configuration/allow_http_connections_when_no_cassette.feature
|
435
434
|
- features/configuration/cassette_library_dir.feature
|
@@ -475,9 +474,11 @@ files:
|
|
475
474
|
- features/test_frameworks/test_unit.feature
|
476
475
|
- lib/vcr.rb
|
477
476
|
- lib/vcr/cassette.rb
|
477
|
+
- lib/vcr/cassette/erb_renderer.rb
|
478
478
|
- lib/vcr/cassette/http_interaction_list.rb
|
479
479
|
- lib/vcr/cassette/migrator.rb
|
480
|
-
- lib/vcr/cassette/
|
480
|
+
- lib/vcr/cassette/persisters.rb
|
481
|
+
- lib/vcr/cassette/persisters/file_system.rb
|
481
482
|
- lib/vcr/cassette/serializers.rb
|
482
483
|
- lib/vcr/cassette/serializers/json.rb
|
483
484
|
- lib/vcr/cassette/serializers/psych.rb
|
@@ -508,9 +509,7 @@ files:
|
|
508
509
|
- lib/vcr/util/variable_args_block_caller.rb
|
509
510
|
- lib/vcr/util/version_checker.rb
|
510
511
|
- lib/vcr/version.rb
|
511
|
-
- script/
|
512
|
-
- script/full_build
|
513
|
-
- script/spec
|
512
|
+
- script/ci.sh
|
514
513
|
- spec/capture_warnings.rb
|
515
514
|
- spec/fixtures/cassette_spec/1_x_cassette.yml
|
516
515
|
- spec/fixtures/cassette_spec/empty.yml
|
@@ -529,9 +528,11 @@ files:
|
|
529
528
|
- spec/support/sinatra_app.rb
|
530
529
|
- spec/support/vcr_localhost_server.rb
|
531
530
|
- spec/support/vcr_stub_helpers.rb
|
531
|
+
- spec/vcr/cassette/erb_renderer_spec.rb
|
532
532
|
- spec/vcr/cassette/http_interaction_list_spec.rb
|
533
533
|
- spec/vcr/cassette/migrator_spec.rb
|
534
|
-
- spec/vcr/cassette/
|
534
|
+
- spec/vcr/cassette/persisters/file_system_spec.rb
|
535
|
+
- spec/vcr/cassette/persisters_spec.rb
|
535
536
|
- spec/vcr/cassette/serializers_spec.rb
|
536
537
|
- spec/vcr/cassette_spec.rb
|
537
538
|
- spec/vcr/configuration_spec.rb
|
@@ -596,6 +597,7 @@ specification_version: 3
|
|
596
597
|
summary: Record your test suite's HTTP interactions and replay them during future test runs for fast, deterministic, accurate tests.
|
597
598
|
test_files:
|
598
599
|
- features/about_these_examples.md
|
600
|
+
- features/cassettes/allow_unused_http_interactions.feature
|
599
601
|
- features/cassettes/automatic_re_recording.feature
|
600
602
|
- features/cassettes/decompress.feature
|
601
603
|
- features/cassettes/dynamic_erb.feature
|
@@ -603,6 +605,7 @@ test_files:
|
|
603
605
|
- features/cassettes/format.feature
|
604
606
|
- features/cassettes/naming.feature
|
605
607
|
- features/cassettes/no_cassette.feature
|
608
|
+
- features/cassettes/persistence.feature
|
606
609
|
- features/cassettes/update_content_length_header.feature
|
607
610
|
- features/configuration/allow_http_connections_when_no_cassette.feature
|
608
611
|
- features/configuration/cassette_library_dir.feature
|
@@ -664,9 +667,11 @@ test_files:
|
|
664
667
|
- spec/support/sinatra_app.rb
|
665
668
|
- spec/support/vcr_localhost_server.rb
|
666
669
|
- spec/support/vcr_stub_helpers.rb
|
670
|
+
- spec/vcr/cassette/erb_renderer_spec.rb
|
667
671
|
- spec/vcr/cassette/http_interaction_list_spec.rb
|
668
672
|
- spec/vcr/cassette/migrator_spec.rb
|
669
|
-
- spec/vcr/cassette/
|
673
|
+
- spec/vcr/cassette/persisters/file_system_spec.rb
|
674
|
+
- spec/vcr/cassette/persisters_spec.rb
|
670
675
|
- spec/vcr/cassette/serializers_spec.rb
|
671
676
|
- spec/vcr/cassette_spec.rb
|
672
677
|
- spec/vcr/configuration_spec.rb
|
data/Guardfile
DELETED
data/script/FullBuildRakeFile
DELETED
@@ -1,56 +0,0 @@
|
|
1
|
-
# this is in a separate rakefile because our main one depends on the bundled gems
|
2
|
-
# already being installed. This must be able to run w/o bundled gems installed.
|
3
|
-
|
4
|
-
def rake(command = "")
|
5
|
-
sh "rake #{command} FULL_BUILD=true"
|
6
|
-
end
|
7
|
-
|
8
|
-
desc "Run a full build: install necessary gems with bundler, runs specs, run cukes"
|
9
|
-
task :build => :bundle_install do
|
10
|
-
rake
|
11
|
-
end
|
12
|
-
|
13
|
-
desc "Install necessary gems with bundler and runs specs"
|
14
|
-
task :spec => :bundle_install do
|
15
|
-
rake "spec"
|
16
|
-
end
|
17
|
-
|
18
|
-
desc "Install necessary gems with bundler and runs cukes"
|
19
|
-
task :cucumber => :bundle_install do
|
20
|
-
rake "cucumber"
|
21
|
-
end
|
22
|
-
|
23
|
-
desc "Prints description of current ruby interpreter"
|
24
|
-
task :print_ruby_description do
|
25
|
-
description = if defined?(RUBY_DESCRIPTION)
|
26
|
-
RUBY_DESCRIPTION
|
27
|
-
else
|
28
|
-
# RUBY_DESCRIPTION is undefined on 1.8.6
|
29
|
-
"ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE} patchlevel #{RUBY_PATCHLEVEL}) [#{RUBY_PLATFORM}]"
|
30
|
-
end
|
31
|
-
|
32
|
-
puts
|
33
|
-
puts "=" * 80
|
34
|
-
puts "Using #{description}"
|
35
|
-
puts "=" * 80
|
36
|
-
puts
|
37
|
-
end
|
38
|
-
|
39
|
-
task :bundle_install => :ensure_bundler_installed do
|
40
|
-
sh "bundle install"
|
41
|
-
end
|
42
|
-
|
43
|
-
task :ensure_bundler_installed => :print_ruby_description do
|
44
|
-
installed = begin
|
45
|
-
require 'rubygems'
|
46
|
-
require 'bundler'
|
47
|
-
true
|
48
|
-
rescue LoadError
|
49
|
-
false
|
50
|
-
end
|
51
|
-
|
52
|
-
unless installed
|
53
|
-
sh "gem install bundler"
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
data/script/full_build
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
rvm 1.8.7,1.9.2,ree,rbx rake -f script/FullBuildRakeFile build | tee tmp/full_build.out
|
data/script/spec
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
rvm 1.8.6,1.8.7,1.9.1,1.9.2,ree,rbx rake -f script/FullBuildRakeFile spec | tee tmp/spec.out
|