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.
Files changed (59) hide show
  1. data/.travis.yml +2 -1
  2. data/CHANGELOG.md +58 -1
  3. data/Gemfile +0 -6
  4. data/README.md +12 -3
  5. data/Rakefile +2 -2
  6. data/features/.nav +2 -0
  7. data/features/cassettes/allow_unused_http_interactions.feature +86 -0
  8. data/features/cassettes/naming.feature +3 -2
  9. data/features/cassettes/persistence.feature +63 -0
  10. data/features/configuration/debug_logging.feature +3 -3
  11. data/features/configuration/ignore_request.feature +1 -1
  12. data/features/hooks/after_http_request.feature +1 -1
  13. data/features/step_definitions/cli_steps.rb +33 -0
  14. data/features/support/env.rb +0 -1
  15. data/lib/vcr.rb +13 -0
  16. data/lib/vcr/cassette.rb +57 -44
  17. data/lib/vcr/cassette/{reader.rb → erb_renderer.rb} +9 -11
  18. data/lib/vcr/cassette/http_interaction_list.rb +18 -0
  19. data/lib/vcr/cassette/persisters.rb +42 -0
  20. data/lib/vcr/cassette/persisters/file_system.rb +60 -0
  21. data/lib/vcr/cassette/serializers.rb +1 -1
  22. data/lib/vcr/cassette/serializers/json.rb +1 -1
  23. data/lib/vcr/cassette/serializers/psych.rb +1 -1
  24. data/lib/vcr/cassette/serializers/syck.rb +1 -1
  25. data/lib/vcr/cassette/serializers/yaml.rb +1 -1
  26. data/lib/vcr/configuration.rb +49 -25
  27. data/lib/vcr/errors.rb +6 -0
  28. data/lib/vcr/library_hooks/excon.rb +1 -1
  29. data/lib/vcr/library_hooks/fakeweb.rb +16 -3
  30. data/lib/vcr/library_hooks/faraday.rb +13 -0
  31. data/lib/vcr/library_hooks/typhoeus.rb +5 -1
  32. data/lib/vcr/library_hooks/webmock.rb +90 -35
  33. data/lib/vcr/middleware/faraday.rb +12 -4
  34. data/lib/vcr/request_handler.rb +10 -2
  35. data/lib/vcr/structs.rb +31 -7
  36. data/lib/vcr/version.rb +1 -1
  37. data/script/ci.sh +14 -0
  38. data/spec/spec_helper.rb +8 -1
  39. data/spec/support/shared_example_groups/hook_into_http_library.rb +31 -1
  40. data/spec/vcr/cassette/{reader_spec.rb → erb_renderer_spec.rb} +15 -21
  41. data/spec/vcr/cassette/http_interaction_list_spec.rb +15 -0
  42. data/spec/vcr/cassette/persisters/file_system_spec.rb +64 -0
  43. data/spec/vcr/cassette/persisters_spec.rb +39 -0
  44. data/spec/vcr/cassette/serializers_spec.rb +4 -3
  45. data/spec/vcr/cassette_spec.rb +65 -41
  46. data/spec/vcr/configuration_spec.rb +33 -2
  47. data/spec/vcr/library_hooks/fakeweb_spec.rb +11 -0
  48. data/spec/vcr/library_hooks/faraday_spec.rb +24 -0
  49. data/spec/vcr/library_hooks/webmock_spec.rb +82 -2
  50. data/spec/vcr/middleware/faraday_spec.rb +32 -0
  51. data/spec/vcr/structs_spec.rb +60 -20
  52. data/spec/vcr/util/hooks_spec.rb +7 -0
  53. data/spec/vcr_spec.rb +7 -0
  54. data/vcr.gemspec +2 -2
  55. metadata +31 -26
  56. data/Guardfile +0 -9
  57. data/script/FullBuildRakeFile +0 -56
  58. data/script/full_build +0 -1
  59. data/script/spec +0 -1
@@ -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.1.5.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: 9
4
+ hash: 7
5
5
  prerelease:
6
6
  segments:
7
7
  - 2
8
- - 1
9
- - 1
10
- version: 2.1.1
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-04-25 00:00:00 Z
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: 119
172
+ hash: 7
173
173
  segments:
174
174
  - 2
175
- - 1
176
- - 5
177
175
  - 2
178
- version: 2.1.5.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: 1
290
+ hash: 13
293
291
  segments:
294
292
  - 0
293
+ - 5
295
294
  - 3
296
- - 9
297
- version: 0.3.9
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: 13
306
+ hash: 3
309
307
  segments:
310
- - 0
311
- - 5
312
- - 3
313
- version: 0.5.3
314
- name: simplecov
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/reader.rb
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/FullBuildRakeFile
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/reader_spec.rb
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/reader_spec.rb
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
@@ -1,9 +0,0 @@
1
- # A sample Guardfile
2
- # More info at http://github.com/guard/guard#readme
3
-
4
- guard 'rspec', :version => 2 do
5
- watch(%r|^spec/(.*)_spec.rb|)
6
- watch(%r|^lib/(.*)\.rb|) { |m| "spec/#{m[1]}_spec.rb" }
7
- watch(%r|^spec/spec_helper.rb|) { "spec" }
8
- end
9
-
@@ -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