vcr 2.1.1 → 2.2.0

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