vcr 2.1.1 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|