On 02/11/11 12:06, Michal Fojtik wrote: > On Nov 2, 2011, at 10:34 AM, mar...@redhat.com wrote: > > Hi, > > I tried to run the tests but I got this error: > > test_02_it_can_post_new_blob(GoogleTest::BucketsTest): > Excon::Errors::SocketError:can't convert Tempfile into String > /Library/Ruby/Gems/1.8/gems/vcr-1.11.3/lib/vcr/structs/normalizers/body.rb:19:in > `initialize' > /Library/Ruby/Gems/1.8/gems/vcr-1.11.3/lib/vcr/structs/normalizers/body.rb:19:in > `new' > /Library/Ruby/Gems/1.8/gems/vcr-1.11.3/lib/vcr/structs/normalizers/body.rb:19:in > `normalize_body' > /Library/Ruby/Gems/1.8/gems/vcr-1.11.3/lib/vcr/structs/normalizers/body.rb:6:in > `initialize' > /Library/Ruby/Gems/1.8/gems/vcr-1.11.3/lib/vcr/http_stubbing_adapters/excon.rb:131:in > `new' > /Library/Ruby/Gems/1.8/gems/vcr-1.11.3/lib/vcr/http_stubbing_adapters/excon.rb:131:in > `vcr_request' > /Library/Ruby/Gems/1.8/gems/vcr-1.11.3/lib/vcr/http_stubbing_adapters/excon.rb:47:in > `stubbed_response' > /Library/Ruby/Gems/1.8/gems/vcr-1.11.3/lib/vcr/http_stubbing_adapters/excon.rb:30:in > `handle' > /Library/Ruby/Gems/1.8/gems/vcr-1.11.3/lib/vcr/http_stubbing_adapters/excon.rb:169 > /Users/mfojtik/.gem/gems/excon-0.7.3/lib/excon/connection.rb:86:in `call' > > I bet this has something to do with gem versions I have installed on my > system:
<sigh>... thanks for letting me know, no, its the same issue I describe in the intro email for the patches... where vcr code tries to normalise the http body (by declaring String.new(body)) but fails when the body is a tempfile, like when creating a blob. Until I get some response from vcr (haven't reported it yet but will do today) then I guess the best thing to do is to monkey patch it in tests/drivers/google/setup.rb... I'll resend the series with the monkey patch now... marios > > firefly ~/code/core/server $ gem list | egrep 'excon|vcr|fog|net-ssh' > excon (0.7.3) > fog (1.0.0) > net-ssh (2.1.4) > vcr (1.11.3) > > firefly ~/code/core/server $ ruby --version > ruby 1.8.7 (2010-01-10 patchlevel 249) [universal-darwin11.0] > > -- Michal > >> Patch 1/2 contains fixes for google storage driver that came up when writing >> the tests >> >> Patch 2/2 contains the unit tests and vcr recordings. Invoke the tests by >> 'cd /path/to/deltacloud/server; rake test:google' >> >> >> If you are interested in recording new vcr episodes for google storage, read >> on: >> =============================================================================== >> >> The mocking for vcr is done with excon; the google-storage driver uses fog >> to talk to the google-storage service, and fog uses excon for http >> connections. I came across a couple of issues when trying to make the vcr >> recordings, as reported here for example >> https://groups.google.com/group/ruby-fog/browse_thread/thread/737295ebb42e67d1/7e5a09463c4513c2?lnk=gst&q=fog+and+vcr#7e5a09463c4513c2 >> >> Another issue is that the vcr code tries to 'normalise' the HTTP body, as >> described here https://github.com/myronmarston/vcr/issues/4 However, for >> the 'create blob' test, the body is a tempfile which caused the >> normalisation to fail (normalisation is done by String.new(body)). Thus, in >> order to record 'new' episodes for google storage I had to change the >> normalisation code: >> >> From 5ad2e93a1c0d38164953b0845b83e141ddd9b494 Mon Sep 17 00:00:00 2001 >> From: marios <mar...@redhat.com> >> Date: Wed, 2 Nov 2011 11:17:14 +0200 >> Subject: [PATCH] Fix normaliser - don't normalise body when body is a >> tempfile >> >> --- >> lib/vcr/structs/normalizers/body.rb | 2 +- >> 1 files changed, 1 insertions(+), 1 deletions(-) >> >> diff --git a/lib/vcr/structs/normalizers/body.rb >> b/lib/vcr/structs/normalizers/body.rb >> index 6b013fc..e07ec75 100644 >> --- a/lib/vcr/structs/normalizers/body.rb >> +++ b/lib/vcr/structs/normalizers/body.rb >> @@ -16,7 +16,7 @@ module VCR >> # http://github.com/myronmarston/vcr/issues/4 >> self.body = case body >> when nil, ''; nil >> - else String.new(body) >> + else String.new(body) unless body.is_a?(Tempfile) >> end >> end >> end >> -- >> 1.7.6.4 >> >> >> >> The above patch is for vcr version 1.11.3 (current @ Rubygems.org)... >> however for v2.0.0 currently in beta (cloned from github) the noralisation >> code has been moved to ./lib/vcr/cassette/migrator.rb:105 . I'll report the >> issue to github. > > ------------------------------------------------------ > Michal Fojtik, mfoj...@redhat.com > Deltacloud API: http://deltacloud.org >