Hi all, I had some specs that were using fixture_file_upload that were passing just fine. Then I froze edge rails to get some 2.0 functionality, then a I upgraded to trunk rspec to deal with uninitialized constant ActionView::Helpers::JavaScriptMacrosHelper After a couple other of tribulations, I have now gotten down to just a couple of not passing specs, all using the fixture_file_upload. Here''s an example it "should be invalid if uploaded file is not an image" do @image.attributes = valid_image_attributes.merge({:uploaded_data => fixture_file_upload(''/textfile.txt'', ''text/plain'')}) @image.should_not be_valid # content_type: is not included in the list @image.should have(1).error_on(:content_type) end which fails with: 2) NoMethodError in ''Image unsaved should be invalid if uploaded file is not an image'' You have a nil object when you didn''t expect it! You might have expected an instance of Array. The error occurred while evaluating nil.+ ./spec/models/image_spec.rb:25: A less than helpful error message. Any insight into what might be causing this? Thanks, Les
On Nov 8, 2007 11:25 PM, Leslie Freeman <lesliefreeman3 at gmail.com> wrote:> Hi all, > I had some specs that were using fixture_file_upload that were > passing just fine. Then I froze edge rails to get some 2.0 > functionality, then a I upgraded to trunk rspec to deal with > > uninitialized constant ActionView::Helpers::JavaScriptMacrosHelper > > After a couple other of tribulations, I have now gotten down to just > a couple of not passing specs, all using the fixture_file_upload. > Here''s an example > > it "should be invalid if uploaded file is not an image" do > @image.attributes = valid_image_attributes.merge({:uploaded_data > => fixture_file_upload(''/textfile.txt'', > > ''text/plain'')}) > @image.should_not be_valid > # content_type: is not included in the list > @image.should have(1).error_on(:content_type) > end > > which fails with: > 2) > NoMethodError in ''Image unsaved should be invalid if uploaded file is > not an image'' > You have a nil object when you didn''t expect it! > You might have expected an instance of Array. > The error occurred while evaluating nil.+ > ./spec/models/image_spec.rb:25:What''s on line 25?> > A less than helpful error message. Any insight into what might be > causing this? > > Thanks, > Les > _______________________________________________ > rspec-users mailing list > rspec-users at rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users >
On Nov 9, 2007, at 5:09 AM, David Chelimsky wrote:> On Nov 8, 2007 11:25 PM, Leslie Freeman <lesliefreeman3 at gmail.com> > wrote: >> Hi all, >> I had some specs that were using fixture_file_upload that were >> passing just fine. Then I froze edge rails to get some 2.0 >> functionality, then a I upgraded to trunk rspec to deal with >> >> uninitialized constant ActionView::Helpers::JavaScriptMacrosHelper >> >> After a couple other of tribulations, I have now gotten down to just >> a couple of not passing specs, all using the fixture_file_upload. >> Here''s an example >> >> it "should be invalid if uploaded file is not an image" do >> @image.attributes = valid_image_attributes.merge({:uploaded_data >> => fixture_file_upload(''/textfile.txt'', >> >> ''text/plain'')}) >> @image.should_not be_valid >> # content_type: is not included in the list >> @image.should have(1).error_on(:content_type) >> end >> >> which fails with: >> 2) >> NoMethodError in ''Image unsaved should be invalid if uploaded file is >> not an image'' >> You have a nil object when you didn''t expect it! >> You might have expected an instance of Array. >> The error occurred while evaluating nil.+ >> ./spec/models/image_spec.rb:25: > > What''s on line 25?Sorry about that confusion. Line 25 is: @image.attributes = valid_image_attributes.merge({:uploaded_data => fixture_file_upload(''/textfile.txt'',text/plain'')}) (textfile.txt is located in my /spec/fixtures/ dir.) That line doesn''t throw the error if I change it to something like: @image.attributes = valid_image_attributes.merge({:uploaded_data => "foo"}) But of course the spec fails. :) Leslie> >> >> A less than helpful error message. Any insight into what might be >> causing this? >> >> Thanks, >> Les >> _______________________________________________ >> rspec-users mailing list >> rspec-users at rubyforge.org >> http://rubyforge.org/mailman/listinfo/rspec-users >> > _______________________________________________ > rspec-users mailing list > rspec-users at rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users
To follow up on this a little more, I created a new project, froze rails to edge (REVISION_8125), and installed rspec/rspec on rails from trunk. Then I generated an rspec_model for Asset with the following spec: require File.dirname(__FILE__) + ''/../spec_helper'' describe Asset do before(:each) do @asset = Asset.new end it "should be valid" do @asset.should be_valid end it "should allow me to use fixture_file_upload" do @asset.attributes = {:uploaded_data => fixture_file_upload (''images/florence.jpg'', ''image/jpeg'')} end end I created an images directory in my spec/fixtures dir and added florence.jpg to it. Then, when I run rake spec I get this error: NoMethodError in ''Asset should allow me to use fixture_file_upload'' You have a nil object when you didn''t expect it! You might have expected an instance of Array. The error occurred while evaluating nil.+ /Users/leslief/Sites/tmp/testapp/vendor/rails/actionpack/lib/ action_controller/test_process.rb:480:in `fixture_file_upload'' ./spec/models/asset_spec.rb:13: /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/dsl/ example_group_methods.rb:40:in `instance_eval'' /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/dsl/ example_group_methods.rb:40:in `run_example'' /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/dsl/ example_runner.rb:63:in `run_example'' /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/dsl/ example_runner.rb:24:in `run'' /opt/local/lib/ruby/1.8/timeout.rb:48:in `timeout'' /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/dsl/ example_runner.rb:22:in `run'' /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/dsl/ example_suite.rb:26:in `rspec_run'' /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/dsl/ example_suite.rb:22:in `each'' /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/dsl/ example_suite.rb:22:in `rspec_run'' /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/test/ unit/example_suite.rb:7:in `run'' /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/runner/ behaviour_runner.rb:22:in `run'' /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/runner/ behaviour_runner.rb:21:in `each'' /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/runner/ behaviour_runner.rb:21:in `run'' /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/runner/ options.rb:80:in `run_examples'' /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/runner/ command_line.rb:19:in `run'' /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/bin/spec:3: line 13 of asset_spec.rb is @asset.attributes = {:uploaded_data => fixture_file_upload(''images/florence.jpg'', ''image/jpeg'')} the offending line in test_process.rb is: Test::Unit::TestCase.respond_to?(:fixture_path) ? Test::Unit::TestCase.fixture_path + path : path, mime_type, binary From the full function: def fixture_file_upload(path, mime_type = nil, binary = false) ActionController::TestUploadedFile.new( Test::Unit::TestCase.respond_to?(:fixture_path) ? Test::Unit::TestCase.fixture_path + path : path, mime_type, binary ) end so it seems like Test::Unit::TestCase.fixture_path is returning nil. I tried to do a little digging to find where this should be getting set, but quickly got way out to sea. My spec_helper does have this line: config.fixture_path = RAILS_ROOT + ''/spec/fixtures/'' which seems right. I am hoping someone that knows more about the inner gears of rspec has some insight as to why Test::Unit::TestCase.fixture_path is nil. Thanks, Les On Nov 9, 2007, at 8:25 AM, Leslie Freeman wrote:> > On Nov 9, 2007, at 5:09 AM, David Chelimsky wrote: > >> On Nov 8, 2007 11:25 PM, Leslie Freeman <lesliefreeman3 at gmail.com> >> wrote: >>> Hi all, >>> I had some specs that were using fixture_file_upload that were >>> passing just fine. Then I froze edge rails to get some 2.0 >>> functionality, then a I upgraded to trunk rspec to deal with >>> >>> uninitialized constant ActionView::Helpers::JavaScriptMacrosHelper >>> >>> After a couple other of tribulations, I have now gotten down to just >>> a couple of not passing specs, all using the fixture_file_upload. >>> Here''s an example >>> >>> it "should be invalid if uploaded file is not an image" do >>> @image.attributes = valid_image_attributes.merge >>> ({:uploaded_data >>> => fixture_file_upload(''/textfile.txt'', >>> >>> ''text/plain'')}) >>> @image.should_not be_valid >>> # content_type: is not included in the list >>> @image.should have(1).error_on(:content_type) >>> end >>> >>> which fails with: >>> 2) >>> NoMethodError in ''Image unsaved should be invalid if uploaded >>> file is >>> not an image'' >>> You have a nil object when you didn''t expect it! >>> You might have expected an instance of Array. >>> The error occurred while evaluating nil.+ >>> ./spec/models/image_spec.rb:25: >> >> What''s on line 25? > > Sorry about that confusion. Line 25 is: > > @image.attributes = valid_image_attributes.merge({:uploaded_data => > fixture_file_upload(''/textfile.txt'',text/plain'')}) > > (textfile.txt is located in my /spec/fixtures/ dir.) > > That line doesn''t throw the error if I change it to something like: > @image.attributes = valid_image_attributes.merge({:uploaded_data => > "foo"}) > > But of course the spec fails. :) > > Leslie > >> >>> >>> A less than helpful error message. Any insight into what might be >>> causing this? >>> >>> Thanks, >>> Les >>> _______________________________________________ >>> rspec-users mailing list >>> rspec-users at rubyforge.org >>> http://rubyforge.org/mailman/listinfo/rspec-users >>> >> _______________________________________________ >> rspec-users mailing list >> rspec-users at rubyforge.org >> http://rubyforge.org/mailman/listinfo/rspec-users > > _______________________________________________ > rspec-users mailing list > rspec-users at rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users
On Nov 10, 2007 11:25 PM, Leslie Freeman <lesliefreeman3 at gmail.com> wrote:> To follow up on this a little more, I created a new project, froze > rails to edge (REVISION_8125), and installed rspec/rspec on rails > from trunk. Then I generated an rspec_model for Asset with the > following spec: > > require File.dirname(__FILE__) + ''/../spec_helper'' > > describe Asset do > before(:each) do > @asset = Asset.new > end > > it "should be valid" do > @asset.should be_valid > end > > it "should allow me to use fixture_file_upload" do > @asset.attributes = {:uploaded_data => fixture_file_upload > (''images/florence.jpg'', ''image/jpeg'')} > end > end > > I created an images directory in my spec/fixtures dir and added > florence.jpg to it. Then, when I run rake spec I get this error: > > NoMethodError in ''Asset should allow me to use fixture_file_upload''I am not familiar w/ fixture_file_upload myself. Is there anyone else on this list who is who can help Les debug this situation? Thanks, David> You have a nil object when you didn''t expect it! > You might have expected an instance of Array. > The error occurred while evaluating nil.+ > /Users/leslief/Sites/tmp/testapp/vendor/rails/actionpack/lib/ > action_controller/test_process.rb:480:in `fixture_file_upload'' > ./spec/models/asset_spec.rb:13: > /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/dsl/ > example_group_methods.rb:40:in `instance_eval'' > /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/dsl/ > example_group_methods.rb:40:in `run_example'' > /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/dsl/ > example_runner.rb:63:in `run_example'' > /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/dsl/ > example_runner.rb:24:in `run'' > /opt/local/lib/ruby/1.8/timeout.rb:48:in `timeout'' > /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/dsl/ > example_runner.rb:22:in `run'' > /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/dsl/ > example_suite.rb:26:in `rspec_run'' > /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/dsl/ > example_suite.rb:22:in `each'' > /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/dsl/ > example_suite.rb:22:in `rspec_run'' > /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/test/ > unit/example_suite.rb:7:in `run'' > /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/runner/ > behaviour_runner.rb:22:in `run'' > /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/runner/ > behaviour_runner.rb:21:in `each'' > /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/runner/ > behaviour_runner.rb:21:in `run'' > /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/runner/ > options.rb:80:in `run_examples'' > /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/runner/ > command_line.rb:19:in `run'' > /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/bin/spec:3: > > line 13 of asset_spec.rb is @asset.attributes = {:uploaded_data => > fixture_file_upload(''images/florence.jpg'', ''image/jpeg'')} > > the offending line in test_process.rb is: > Test::Unit::TestCase.respond_to?(:fixture_path) ? > Test::Unit::TestCase.fixture_path + path : path, mime_type, binary > > From the full function: > def fixture_file_upload(path, mime_type = nil, binary = false) > ActionController::TestUploadedFile.new( > Test::Unit::TestCase.respond_to?(:fixture_path) ? > Test::Unit::TestCase.fixture_path + path : path, > mime_type, > binary > ) > end > > so it seems like Test::Unit::TestCase.fixture_path is returning nil. > I tried to do a little digging to find where this should be getting > set, but quickly got way out to sea. > > My spec_helper does have this line: > config.fixture_path = RAILS_ROOT + ''/spec/fixtures/'' > > which seems right. I am hoping someone that knows more about the > inner gears of rspec has some insight as to why > Test::Unit::TestCase.fixture_path is nil. > > Thanks, > Les > > > > On Nov 9, 2007, at 8:25 AM, Leslie Freeman wrote: > > > > > On Nov 9, 2007, at 5:09 AM, David Chelimsky wrote: > > > >> On Nov 8, 2007 11:25 PM, Leslie Freeman <lesliefreeman3 at gmail.com> > >> wrote: > >>> Hi all, > >>> I had some specs that were using fixture_file_upload that were > >>> passing just fine. Then I froze edge rails to get some 2.0 > >>> functionality, then a I upgraded to trunk rspec to deal with > >>> > >>> uninitialized constant ActionView::Helpers::JavaScriptMacrosHelper > >>> > >>> After a couple other of tribulations, I have now gotten down to just > >>> a couple of not passing specs, all using the fixture_file_upload. > >>> Here''s an example > >>> > >>> it "should be invalid if uploaded file is not an image" do > >>> @image.attributes = valid_image_attributes.merge > >>> ({:uploaded_data > >>> => fixture_file_upload(''/textfile.txt'', > >>> > >>> ''text/plain'')}) > >>> @image.should_not be_valid > >>> # content_type: is not included in the list > >>> @image.should have(1).error_on(:content_type) > >>> end > >>> > >>> which fails with: > >>> 2) > >>> NoMethodError in ''Image unsaved should be invalid if uploaded > >>> file is > >>> not an image'' > >>> You have a nil object when you didn''t expect it! > >>> You might have expected an instance of Array. > >>> The error occurred while evaluating nil.+ > >>> ./spec/models/image_spec.rb:25: > >> > >> What''s on line 25? > > > > Sorry about that confusion. Line 25 is: > > > > @image.attributes = valid_image_attributes.merge({:uploaded_data => > > fixture_file_upload(''/textfile.txt'',text/plain'')}) > > > > (textfile.txt is located in my /spec/fixtures/ dir.) > > > > That line doesn''t throw the error if I change it to something like: > > @image.attributes = valid_image_attributes.merge({:uploaded_data => > > "foo"}) > > > > But of course the spec fails. :) > > > > Leslie > > > >> > >>> > >>> A less than helpful error message. Any insight into what might be > >>> causing this? > >>> > >>> Thanks, > >>> Les > >>> _______________________________________________ > >>> rspec-users mailing list > >>> rspec-users at rubyforge.org > >>> http://rubyforge.org/mailman/listinfo/rspec-users > >>> > >> _______________________________________________ > >> rspec-users mailing list > >> rspec-users at rubyforge.org > >> http://rubyforge.org/mailman/listinfo/rspec-users > > > > _______________________________________________ > > rspec-users mailing list > > rspec-users at rubyforge.org > > http://rubyforge.org/mailman/listinfo/rspec-users > > _______________________________________________ > rspec-users mailing list > rspec-users at rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users >
Slowly digging to the bottom of this one. If I add Test::Unit::TestCase.fixture_path = RAILS_ROOT + ''/spec/fixtures/'' to my spec_helper.rb, then everything runs fine. So presumably there is somewhere that config.fixture_path from the Spec::Runner.configure block is supposed to get put into Test::Unit::TestCase.fixture_path, and for some reason that is no longer happening. I will continue to dig into this problem, but if anyone is familiar with this part of the rspec system and can help me get to the right place faster, I''d sure appreciate it. Les On Nov 11, 2007, at 6:51 AM, David Chelimsky wrote:> On Nov 10, 2007 11:25 PM, Leslie Freeman <lesliefreeman3 at gmail.com> > wrote: >> To follow up on this a little more, I created a new project, froze >> rails to edge (REVISION_8125), and installed rspec/rspec on rails >> from trunk. Then I generated an rspec_model for Asset with the >> following spec: >> >> require File.dirname(__FILE__) + ''/../spec_helper'' >> >> describe Asset do >> before(:each) do >> @asset = Asset.new >> end >> >> it "should be valid" do >> @asset.should be_valid >> end >> >> it "should allow me to use fixture_file_upload" do >> @asset.attributes = {:uploaded_data => fixture_file_upload >> (''images/florence.jpg'', ''image/jpeg'')} >> end >> end >> >> I created an images directory in my spec/fixtures dir and added >> florence.jpg to it. Then, when I run rake spec I get this error: >> >> NoMethodError in ''Asset should allow me to use fixture_file_upload'' > > I am not familiar w/ fixture_file_upload myself. Is there anyone else > on this list who is who can help Les debug this situation? > > Thanks, > David > >> You have a nil object when you didn''t expect it! >> You might have expected an instance of Array. >> The error occurred while evaluating nil.+ >> /Users/leslief/Sites/tmp/testapp/vendor/rails/actionpack/lib/ >> action_controller/test_process.rb:480:in `fixture_file_upload'' >> ./spec/models/asset_spec.rb:13: >> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/dsl/ >> example_group_methods.rb:40:in `instance_eval'' >> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/dsl/ >> example_group_methods.rb:40:in `run_example'' >> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/dsl/ >> example_runner.rb:63:in `run_example'' >> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/dsl/ >> example_runner.rb:24:in `run'' >> /opt/local/lib/ruby/1.8/timeout.rb:48:in `timeout'' >> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/dsl/ >> example_runner.rb:22:in `run'' >> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/dsl/ >> example_suite.rb:26:in `rspec_run'' >> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/dsl/ >> example_suite.rb:22:in `each'' >> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/dsl/ >> example_suite.rb:22:in `rspec_run'' >> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/test/ >> unit/example_suite.rb:7:in `run'' >> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/ >> runner/ >> behaviour_runner.rb:22:in `run'' >> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/ >> runner/ >> behaviour_runner.rb:21:in `each'' >> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/ >> runner/ >> behaviour_runner.rb:21:in `run'' >> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/ >> runner/ >> options.rb:80:in `run_examples'' >> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/ >> runner/ >> command_line.rb:19:in `run'' >> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/bin/spec:3: >> >> line 13 of asset_spec.rb is @asset.attributes = {:uploaded_data => >> fixture_file_upload(''images/florence.jpg'', ''image/jpeg'')} >> >> the offending line in test_process.rb is: >> Test::Unit::TestCase.respond_to?(:fixture_path) ? >> Test::Unit::TestCase.fixture_path + path : path, mime_type, binary >> >> From the full function: >> def fixture_file_upload(path, mime_type = nil, binary = false) >> ActionController::TestUploadedFile.new( >> Test::Unit::TestCase.respond_to?(:fixture_path) ? >> Test::Unit::TestCase.fixture_path + path : path, >> mime_type, >> binary >> ) >> end >> >> so it seems like Test::Unit::TestCase.fixture_path is returning nil. >> I tried to do a little digging to find where this should be getting >> set, but quickly got way out to sea. >> >> My spec_helper does have this line: >> config.fixture_path = RAILS_ROOT + ''/spec/fixtures/'' >> >> which seems right. I am hoping someone that knows more about the >> inner gears of rspec has some insight as to why >> Test::Unit::TestCase.fixture_path is nil. >> >> Thanks, >> Les >> >> >> >> On Nov 9, 2007, at 8:25 AM, Leslie Freeman wrote: >> >>> >>> On Nov 9, 2007, at 5:09 AM, David Chelimsky wrote: >>> >>>> On Nov 8, 2007 11:25 PM, Leslie Freeman <lesliefreeman3 at gmail.com> >>>> wrote: >>>>> Hi all, >>>>> I had some specs that were using fixture_file_upload that were >>>>> passing just fine. Then I froze edge rails to get some 2.0 >>>>> functionality, then a I upgraded to trunk rspec to deal with >>>>> >>>>> uninitialized constant ActionView::Helpers::JavaScriptMacrosHelper >>>>> >>>>> After a couple other of tribulations, I have now gotten down to >>>>> just >>>>> a couple of not passing specs, all using the fixture_file_upload. >>>>> Here''s an example >>>>> >>>>> it "should be invalid if uploaded file is not an image" do >>>>> @image.attributes = valid_image_attributes.merge >>>>> ({:uploaded_data >>>>> => fixture_file_upload(''/textfile.txt'', >>>>> >>>>> ''text/plain'')}) >>>>> @image.should_not be_valid >>>>> # content_type: is not included in the list >>>>> @image.should have(1).error_on(:content_type) >>>>> end >>>>> >>>>> which fails with: >>>>> 2) >>>>> NoMethodError in ''Image unsaved should be invalid if uploaded >>>>> file is >>>>> not an image'' >>>>> You have a nil object when you didn''t expect it! >>>>> You might have expected an instance of Array. >>>>> The error occurred while evaluating nil.+ >>>>> ./spec/models/image_spec.rb:25: >>>> >>>> What''s on line 25? >>> >>> Sorry about that confusion. Line 25 is: >>> >>> @image.attributes = valid_image_attributes.merge({:uploaded_data => >>> fixture_file_upload(''/textfile.txt'',text/plain'')}) >>> >>> (textfile.txt is located in my /spec/fixtures/ dir.) >>> >>> That line doesn''t throw the error if I change it to something like: >>> @image.attributes = valid_image_attributes.merge({:uploaded_data => >>> "foo"}) >>> >>> But of course the spec fails. :) >>> >>> Leslie >>> >>>> >>>>> >>>>> A less than helpful error message. Any insight into what might be >>>>> causing this? >>>>> >>>>> Thanks, >>>>> Les >>>>> _______________________________________________ >>>>> rspec-users mailing list >>>>> rspec-users at rubyforge.org >>>>> http://rubyforge.org/mailman/listinfo/rspec-users >>>>> >>>> _______________________________________________ >>>> rspec-users mailing list >>>> rspec-users at rubyforge.org >>>> http://rubyforge.org/mailman/listinfo/rspec-users >>> >>> _______________________________________________ >>> rspec-users mailing list >>> rspec-users at rubyforge.org >>> http://rubyforge.org/mailman/listinfo/rspec-users >> >> _______________________________________________ >> rspec-users mailing list >> rspec-users at rubyforge.org >> http://rubyforge.org/mailman/listinfo/rspec-users >> > _______________________________________________ > rspec-users mailing list > rspec-users at rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users
On Nov 11, 2007 8:29 AM, Leslie Freeman <leslief at sunquake.net> wrote:> Slowly digging to the bottom of this one. > > If I add > > Test::Unit::TestCase.fixture_path = RAILS_ROOT + ''/spec/fixtures/'' > > to my spec_helper.rb, then everything runs fine. So presumably there > is somewhere that config.fixture_path from the Spec::Runner.configure > block is supposed to get put into Test::Unit::TestCase.fixture_path, > and for some reason that is no longer happening. I will continue to > dig into this problem, but if anyone is familiar with this part of > the rspec system and can help me get to the right place faster, I''d > sure appreciate it.It looks like rails changed. For now just set Test::Unit::TestCase.fixture_path. Ill come up with a fix in rspec core.> > Les > > > > On Nov 11, 2007, at 6:51 AM, David Chelimsky wrote: > > > On Nov 10, 2007 11:25 PM, Leslie Freeman <lesliefreeman3 at gmail.com> > > wrote: > >> To follow up on this a little more, I created a new project, froze > >> rails to edge (REVISION_8125), and installed rspec/rspec on rails > >> from trunk. Then I generated an rspec_model for Asset with the > >> following spec: > >> > >> require File.dirname(__FILE__) + ''/../spec_helper'' > >> > >> describe Asset do > >> before(:each) do > >> @asset = Asset.new > >> end > >> > >> it "should be valid" do > >> @asset.should be_valid > >> end > >> > >> it "should allow me to use fixture_file_upload" do > >> @asset.attributes = {:uploaded_data => fixture_file_upload > >> (''images/florence.jpg'', ''image/jpeg'')} > >> end > >> end > >> > >> I created an images directory in my spec/fixtures dir and added > >> florence.jpg to it. Then, when I run rake spec I get this error: > >> > >> NoMethodError in ''Asset should allow me to use fixture_file_upload'' > > > > I am not familiar w/ fixture_file_upload myself. Is there anyone else > > on this list who is who can help Les debug this situation? > > > > Thanks, > > David > > > >> You have a nil object when you didn''t expect it! > >> You might have expected an instance of Array. > >> The error occurred while evaluating nil.+ > >> /Users/leslief/Sites/tmp/testapp/vendor/rails/actionpack/lib/ > >> action_controller/test_process.rb:480:in `fixture_file_upload'' > >> ./spec/models/asset_spec.rb:13: > >> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/dsl/ > >> example_group_methods.rb:40:in `instance_eval'' > >> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/dsl/ > >> example_group_methods.rb:40:in `run_example'' > >> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/dsl/ > >> example_runner.rb:63:in `run_example'' > >> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/dsl/ > >> example_runner.rb:24:in `run'' > >> /opt/local/lib/ruby/1.8/timeout.rb:48:in `timeout'' > >> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/dsl/ > >> example_runner.rb:22:in `run'' > >> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/dsl/ > >> example_suite.rb:26:in `rspec_run'' > >> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/dsl/ > >> example_suite.rb:22:in `each'' > >> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/dsl/ > >> example_suite.rb:22:in `rspec_run'' > >> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/test/ > >> unit/example_suite.rb:7:in `run'' > >> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/ > >> runner/ > >> behaviour_runner.rb:22:in `run'' > >> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/ > >> runner/ > >> behaviour_runner.rb:21:in `each'' > >> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/ > >> runner/ > >> behaviour_runner.rb:21:in `run'' > >> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/ > >> runner/ > >> options.rb:80:in `run_examples'' > >> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/ > >> runner/ > >> command_line.rb:19:in `run'' > >> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/bin/spec:3: > >> > >> line 13 of asset_spec.rb is @asset.attributes = {:uploaded_data => > >> fixture_file_upload(''images/florence.jpg'', ''image/jpeg'')} > >> > >> the offending line in test_process.rb is: > >> Test::Unit::TestCase.respond_to?(:fixture_path) ? > >> Test::Unit::TestCase.fixture_path + path : path, mime_type, binary > >> > >> From the full function: > >> def fixture_file_upload(path, mime_type = nil, binary = false) > >> ActionController::TestUploadedFile.new( > >> Test::Unit::TestCase.respond_to?(:fixture_path) ? > >> Test::Unit::TestCase.fixture_path + path : path, > >> mime_type, > >> binary > >> ) > >> end > >> > >> so it seems like Test::Unit::TestCase.fixture_path is returning nil. > >> I tried to do a little digging to find where this should be getting > >> set, but quickly got way out to sea. > >> > >> My spec_helper does have this line: > >> config.fixture_path = RAILS_ROOT + ''/spec/fixtures/'' > >> > >> which seems right. I am hoping someone that knows more about the > >> inner gears of rspec has some insight as to why > >> Test::Unit::TestCase.fixture_path is nil. > >> > >> Thanks, > >> Les > >> > >> > >> > >> On Nov 9, 2007, at 8:25 AM, Leslie Freeman wrote: > >> > >>> > >>> On Nov 9, 2007, at 5:09 AM, David Chelimsky wrote: > >>> > >>>> On Nov 8, 2007 11:25 PM, Leslie Freeman <lesliefreeman3 at gmail.com> > >>>> wrote: > >>>>> Hi all, > >>>>> I had some specs that were using fixture_file_upload that were > >>>>> passing just fine. Then I froze edge rails to get some 2.0 > >>>>> functionality, then a I upgraded to trunk rspec to deal with > >>>>> > >>>>> uninitialized constant ActionView::Helpers::JavaScriptMacrosHelper > >>>>> > >>>>> After a couple other of tribulations, I have now gotten down to > >>>>> just > >>>>> a couple of not passing specs, all using the fixture_file_upload. > >>>>> Here''s an example > >>>>> > >>>>> it "should be invalid if uploaded file is not an image" do > >>>>> @image.attributes = valid_image_attributes.merge > >>>>> ({:uploaded_data > >>>>> => fixture_file_upload(''/textfile.txt'', > >>>>> > >>>>> ''text/plain'')}) > >>>>> @image.should_not be_valid > >>>>> # content_type: is not included in the list > >>>>> @image.should have(1).error_on(:content_type) > >>>>> end > >>>>> > >>>>> which fails with: > >>>>> 2) > >>>>> NoMethodError in ''Image unsaved should be invalid if uploaded > >>>>> file is > >>>>> not an image'' > >>>>> You have a nil object when you didn''t expect it! > >>>>> You might have expected an instance of Array. > >>>>> The error occurred while evaluating nil.+ > >>>>> ./spec/models/image_spec.rb:25: > >>>> > >>>> What''s on line 25? > >>> > >>> Sorry about that confusion. Line 25 is: > >>> > >>> @image.attributes = valid_image_attributes.merge({:uploaded_data => > >>> fixture_file_upload(''/textfile.txt'',text/plain'')}) > >>> > >>> (textfile.txt is located in my /spec/fixtures/ dir.) > >>> > >>> That line doesn''t throw the error if I change it to something like: > >>> @image.attributes = valid_image_attributes.merge({:uploaded_data => > >>> "foo"}) > >>> > >>> But of course the spec fails. :) > >>> > >>> Leslie > >>> > >>>> > >>>>> > >>>>> A less than helpful error message. Any insight into what might be > >>>>> causing this? > >>>>> > >>>>> Thanks, > >>>>> Les > >>>>> _______________________________________________ > >>>>> rspec-users mailing list > >>>>> rspec-users at rubyforge.org > >>>>> http://rubyforge.org/mailman/listinfo/rspec-users > >>>>> > >>>> _______________________________________________ > >>>> rspec-users mailing list > >>>> rspec-users at rubyforge.org > >>>> http://rubyforge.org/mailman/listinfo/rspec-users > >>> > >>> _______________________________________________ > >>> rspec-users mailing list > >>> rspec-users at rubyforge.org > >>> http://rubyforge.org/mailman/listinfo/rspec-users > >> > >> _______________________________________________ > >> rspec-users mailing list > >> rspec-users at rubyforge.org > >> http://rubyforge.org/mailman/listinfo/rspec-users > >> > > _______________________________________________ > > rspec-users mailing list > > rspec-users at rubyforge.org > > http://rubyforge.org/mailman/listinfo/rspec-users > > _______________________________________________ > rspec-users mailing list > rspec-users at rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users >
On Nov 11, 2007, at 8:29 AM, Leslie Freeman wrote:> Slowly digging to the bottom of this one. > > If I add > > Test::Unit::TestCase.fixture_path = RAILS_ROOT + ''/spec/fixtures/'' > > to my spec_helper.rb, then everything runs fine. So presumably there > is somewhere that config.fixture_path from the Spec::Runner.configure > block is supposed to get put into Test::Unit::TestCase.fixture_path, > and for some reason that is no longer happening. I will continue to > dig into this problem, but if anyone is familiar with this part of > the rspec system and can help me get to the right place faster, I''d > sure appreciate it. > > Lesfixture_file_upload is just a convenience method to call ActionController::TestUploadedFile.new. I just call ActionController::TestUploadedFile.new directly in my own helper method with the complete path to the file. This avoids any need to mess with fixture_path. Carl> > > > On Nov 11, 2007, at 6:51 AM, David Chelimsky wrote: > >> On Nov 10, 2007 11:25 PM, Leslie Freeman <lesliefreeman3 at gmail.com> >> wrote: >>> To follow up on this a little more, I created a new project, froze >>> rails to edge (REVISION_8125), and installed rspec/rspec on rails >>> from trunk. Then I generated an rspec_model for Asset with the >>> following spec: >>> >>> require File.dirname(__FILE__) + ''/../spec_helper'' >>> >>> describe Asset do >>> before(:each) do >>> @asset = Asset.new >>> end >>> >>> it "should be valid" do >>> @asset.should be_valid >>> end >>> >>> it "should allow me to use fixture_file_upload" do >>> @asset.attributes = {:uploaded_data => fixture_file_upload >>> (''images/florence.jpg'', ''image/jpeg'')} >>> end >>> end >>> >>> I created an images directory in my spec/fixtures dir and added >>> florence.jpg to it. Then, when I run rake spec I get this error: >>> >>> NoMethodError in ''Asset should allow me to use fixture_file_upload'' >> >> I am not familiar w/ fixture_file_upload myself. Is there anyone else >> on this list who is who can help Les debug this situation? >> >> Thanks, >> David >> >>> You have a nil object when you didn''t expect it! >>> You might have expected an instance of Array. >>> The error occurred while evaluating nil.+ >>> /Users/leslief/Sites/tmp/testapp/vendor/rails/actionpack/lib/ >>> action_controller/test_process.rb:480:in `fixture_file_upload'' >>> ./spec/models/asset_spec.rb:13: >>> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/dsl/ >>> example_group_methods.rb:40:in `instance_eval'' >>> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/dsl/ >>> example_group_methods.rb:40:in `run_example'' >>> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/dsl/ >>> example_runner.rb:63:in `run_example'' >>> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/dsl/ >>> example_runner.rb:24:in `run'' >>> /opt/local/lib/ruby/1.8/timeout.rb:48:in `timeout'' >>> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/dsl/ >>> example_runner.rb:22:in `run'' >>> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/dsl/ >>> example_suite.rb:26:in `rspec_run'' >>> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/dsl/ >>> example_suite.rb:22:in `each'' >>> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/dsl/ >>> example_suite.rb:22:in `rspec_run'' >>> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/test/ >>> unit/example_suite.rb:7:in `run'' >>> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/ >>> runner/ >>> behaviour_runner.rb:22:in `run'' >>> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/ >>> runner/ >>> behaviour_runner.rb:21:in `each'' >>> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/ >>> runner/ >>> behaviour_runner.rb:21:in `run'' >>> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/ >>> runner/ >>> options.rb:80:in `run_examples'' >>> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/ >>> runner/ >>> command_line.rb:19:in `run'' >>> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/bin/spec:3: >>> >>> line 13 of asset_spec.rb is @asset.attributes = {:uploaded_data => >>> fixture_file_upload(''images/florence.jpg'', ''image/jpeg'')} >>> >>> the offending line in test_process.rb is: >>> Test::Unit::TestCase.respond_to?(:fixture_path) ? >>> Test::Unit::TestCase.fixture_path + path : path, mime_type, binary >>> >>> From the full function: >>> def fixture_file_upload(path, mime_type = nil, binary = false) >>> ActionController::TestUploadedFile.new( >>> Test::Unit::TestCase.respond_to?(:fixture_path) ? >>> Test::Unit::TestCase.fixture_path + path : path, >>> mime_type, >>> binary >>> ) >>> end >>> >>> so it seems like Test::Unit::TestCase.fixture_path is returning nil. >>> I tried to do a little digging to find where this should be getting >>> set, but quickly got way out to sea. >>> >>> My spec_helper does have this line: >>> config.fixture_path = RAILS_ROOT + ''/spec/fixtures/'' >>> >>> which seems right. I am hoping someone that knows more about the >>> inner gears of rspec has some insight as to why >>> Test::Unit::TestCase.fixture_path is nil. >>> >>> Thanks, >>> Les >>> >>> >>> >>> On Nov 9, 2007, at 8:25 AM, Leslie Freeman wrote: >>> >>>> >>>> On Nov 9, 2007, at 5:09 AM, David Chelimsky wrote: >>>> >>>>> On Nov 8, 2007 11:25 PM, Leslie Freeman <lesliefreeman3 at gmail.com> >>>>> wrote: >>>>>> Hi all, >>>>>> I had some specs that were using fixture_file_upload that were >>>>>> passing just fine. Then I froze edge rails to get some 2.0 >>>>>> functionality, then a I upgraded to trunk rspec to deal with >>>>>> >>>>>> uninitialized constant >>>>>> ActionView::Helpers::JavaScriptMacrosHelper >>>>>> >>>>>> After a couple other of tribulations, I have now gotten down to >>>>>> just >>>>>> a couple of not passing specs, all using the fixture_file_upload. >>>>>> Here''s an example >>>>>> >>>>>> it "should be invalid if uploaded file is not an image" do >>>>>> @image.attributes = valid_image_attributes.merge >>>>>> ({:uploaded_data >>>>>> => fixture_file_upload(''/textfile.txt'', >>>>>> >>>>>> ''text/plain'')}) >>>>>> @image.should_not be_valid >>>>>> # content_type: is not included in the list >>>>>> @image.should have(1).error_on(:content_type) >>>>>> end >>>>>> >>>>>> which fails with: >>>>>> 2) >>>>>> NoMethodError in ''Image unsaved should be invalid if uploaded >>>>>> file is >>>>>> not an image'' >>>>>> You have a nil object when you didn''t expect it! >>>>>> You might have expected an instance of Array. >>>>>> The error occurred while evaluating nil.+ >>>>>> ./spec/models/image_spec.rb:25: >>>>> >>>>> What''s on line 25? >>>> >>>> Sorry about that confusion. Line 25 is: >>>> >>>> @image.attributes = valid_image_attributes.merge({:uploaded_data => >>>> fixture_file_upload(''/textfile.txt'',text/plain'')}) >>>> >>>> (textfile.txt is located in my /spec/fixtures/ dir.) >>>> >>>> That line doesn''t throw the error if I change it to something like: >>>> @image.attributes = valid_image_attributes.merge({:uploaded_data => >>>> "foo"}) >>>> >>>> But of course the spec fails. :) >>>> >>>> Leslie >>>> >>>>> >>>>>> >>>>>> A less than helpful error message. Any insight into what might be >>>>>> causing this? >>>>>> >>>>>> Thanks, >>>>>> Les >>>>>> _______________________________________________ >>>>>> rspec-users mailing list >>>>>> rspec-users at rubyforge.org >>>>>> http://rubyforge.org/mailman/listinfo/rspec-users >>>>>> >>>>> _______________________________________________ >>>>> rspec-users mailing list >>>>> rspec-users at rubyforge.org >>>>> http://rubyforge.org/mailman/listinfo/rspec-users >>>> >>>> _______________________________________________ >>>> rspec-users mailing list >>>> rspec-users at rubyforge.org >>>> http://rubyforge.org/mailman/listinfo/rspec-users >>> >>> _______________________________________________ >>> rspec-users mailing list >>> rspec-users at rubyforge.org >>> http://rubyforge.org/mailman/listinfo/rspec-users >>> >> _______________________________________________ >> rspec-users mailing list >> rspec-users at rubyforge.org >> http://rubyforge.org/mailman/listinfo/rspec-users > > _______________________________________________ > rspec-users mailing list > rspec-users at rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users-------------- next part -------------- A non-text attachment was scrubbed... Name: smime.p7s Type: application/pkcs7-signature Size: 1561 bytes Desc: not available Url : http://rubyforge.org/pipermail/rspec-users/attachments/20071111/1058900f/attachment-0001.bin
On Nov 11, 2007 12:36 PM, Brian Takita <brian.takita at gmail.com> wrote:> On Nov 11, 2007 8:29 AM, Leslie Freeman <leslief at sunquake.net> wrote: > > Slowly digging to the bottom of this one. > > > > If I add > > > > Test::Unit::TestCase.fixture_path = RAILS_ROOT + ''/spec/fixtures/'' > > > > to my spec_helper.rb, then everything runs fine. So presumably there > > is somewhere that config.fixture_path from the Spec::Runner.configure > > block is supposed to get put into Test::Unit::TestCase.fixture_path, > > and for some reason that is no longer happening. I will continue to > > dig into this problem, but if anyone is familiar with this part of > > the rspec system and can help me get to the right place faster, I''d > > sure appreciate it. > It looks like rails changed. > For now just set Test::Unit::TestCase.fixture_path. Ill come up with a > fix in rspec core.It should be fixed now in trunk.> > > > > Les > > > > > > > > On Nov 11, 2007, at 6:51 AM, David Chelimsky wrote: > > > > > On Nov 10, 2007 11:25 PM, Leslie Freeman <lesliefreeman3 at gmail.com> > > > wrote: > > >> To follow up on this a little more, I created a new project, froze > > >> rails to edge (REVISION_8125), and installed rspec/rspec on rails > > >> from trunk. Then I generated an rspec_model for Asset with the > > >> following spec: > > >> > > >> require File.dirname(__FILE__) + ''/../spec_helper'' > > >> > > >> describe Asset do > > >> before(:each) do > > >> @asset = Asset.new > > >> end > > >> > > >> it "should be valid" do > > >> @asset.should be_valid > > >> end > > >> > > >> it "should allow me to use fixture_file_upload" do > > >> @asset.attributes = {:uploaded_data => fixture_file_upload > > >> (''images/florence.jpg'', ''image/jpeg'')} > > >> end > > >> end > > >> > > >> I created an images directory in my spec/fixtures dir and added > > >> florence.jpg to it. Then, when I run rake spec I get this error: > > >> > > >> NoMethodError in ''Asset should allow me to use fixture_file_upload'' > > > > > > I am not familiar w/ fixture_file_upload myself. Is there anyone else > > > on this list who is who can help Les debug this situation? > > > > > > Thanks, > > > David > > > > > >> You have a nil object when you didn''t expect it! > > >> You might have expected an instance of Array. > > >> The error occurred while evaluating nil.+ > > >> /Users/leslief/Sites/tmp/testapp/vendor/rails/actionpack/lib/ > > >> action_controller/test_process.rb:480:in `fixture_file_upload'' > > >> ./spec/models/asset_spec.rb:13: > > >> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/dsl/ > > >> example_group_methods.rb:40:in `instance_eval'' > > >> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/dsl/ > > >> example_group_methods.rb:40:in `run_example'' > > >> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/dsl/ > > >> example_runner.rb:63:in `run_example'' > > >> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/dsl/ > > >> example_runner.rb:24:in `run'' > > >> /opt/local/lib/ruby/1.8/timeout.rb:48:in `timeout'' > > >> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/dsl/ > > >> example_runner.rb:22:in `run'' > > >> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/dsl/ > > >> example_suite.rb:26:in `rspec_run'' > > >> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/dsl/ > > >> example_suite.rb:22:in `each'' > > >> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/dsl/ > > >> example_suite.rb:22:in `rspec_run'' > > >> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/test/ > > >> unit/example_suite.rb:7:in `run'' > > >> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/ > > >> runner/ > > >> behaviour_runner.rb:22:in `run'' > > >> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/ > > >> runner/ > > >> behaviour_runner.rb:21:in `each'' > > >> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/ > > >> runner/ > > >> behaviour_runner.rb:21:in `run'' > > >> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/ > > >> runner/ > > >> options.rb:80:in `run_examples'' > > >> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/ > > >> runner/ > > >> command_line.rb:19:in `run'' > > >> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/bin/spec:3: > > >> > > >> line 13 of asset_spec.rb is @asset.attributes = {:uploaded_data => > > >> fixture_file_upload(''images/florence.jpg'', ''image/jpeg'')} > > >> > > >> the offending line in test_process.rb is: > > >> Test::Unit::TestCase.respond_to?(:fixture_path) ? > > >> Test::Unit::TestCase.fixture_path + path : path, mime_type, binary > > >> > > >> From the full function: > > >> def fixture_file_upload(path, mime_type = nil, binary = false) > > >> ActionController::TestUploadedFile.new( > > >> Test::Unit::TestCase.respond_to?(:fixture_path) ? > > >> Test::Unit::TestCase.fixture_path + path : path, > > >> mime_type, > > >> binary > > >> ) > > >> end > > >> > > >> so it seems like Test::Unit::TestCase.fixture_path is returning nil. > > >> I tried to do a little digging to find where this should be getting > > >> set, but quickly got way out to sea. > > >> > > >> My spec_helper does have this line: > > >> config.fixture_path = RAILS_ROOT + ''/spec/fixtures/'' > > >> > > >> which seems right. I am hoping someone that knows more about the > > >> inner gears of rspec has some insight as to why > > >> Test::Unit::TestCase.fixture_path is nil. > > >> > > >> Thanks, > > >> Les > > >> > > >> > > >> > > >> On Nov 9, 2007, at 8:25 AM, Leslie Freeman wrote: > > >> > > >>> > > >>> On Nov 9, 2007, at 5:09 AM, David Chelimsky wrote: > > >>> > > >>>> On Nov 8, 2007 11:25 PM, Leslie Freeman <lesliefreeman3 at gmail.com> > > >>>> wrote: > > >>>>> Hi all, > > >>>>> I had some specs that were using fixture_file_upload that were > > >>>>> passing just fine. Then I froze edge rails to get some 2.0 > > >>>>> functionality, then a I upgraded to trunk rspec to deal with > > >>>>> > > >>>>> uninitialized constant ActionView::Helpers::JavaScriptMacrosHelper > > >>>>> > > >>>>> After a couple other of tribulations, I have now gotten down to > > >>>>> just > > >>>>> a couple of not passing specs, all using the fixture_file_upload. > > >>>>> Here''s an example > > >>>>> > > >>>>> it "should be invalid if uploaded file is not an image" do > > >>>>> @image.attributes = valid_image_attributes.merge > > >>>>> ({:uploaded_data > > >>>>> => fixture_file_upload(''/textfile.txt'', > > >>>>> > > >>>>> ''text/plain'')}) > > >>>>> @image.should_not be_valid > > >>>>> # content_type: is not included in the list > > >>>>> @image.should have(1).error_on(:content_type) > > >>>>> end > > >>>>> > > >>>>> which fails with: > > >>>>> 2) > > >>>>> NoMethodError in ''Image unsaved should be invalid if uploaded > > >>>>> file is > > >>>>> not an image'' > > >>>>> You have a nil object when you didn''t expect it! > > >>>>> You might have expected an instance of Array. > > >>>>> The error occurred while evaluating nil.+ > > >>>>> ./spec/models/image_spec.rb:25: > > >>>> > > >>>> What''s on line 25? > > >>> > > >>> Sorry about that confusion. Line 25 is: > > >>> > > >>> @image.attributes = valid_image_attributes.merge({:uploaded_data => > > >>> fixture_file_upload(''/textfile.txt'',text/plain'')}) > > >>> > > >>> (textfile.txt is located in my /spec/fixtures/ dir.) > > >>> > > >>> That line doesn''t throw the error if I change it to something like: > > >>> @image.attributes = valid_image_attributes.merge({:uploaded_data => > > >>> "foo"}) > > >>> > > >>> But of course the spec fails. :) > > >>> > > >>> Leslie > > >>> > > >>>> > > >>>>> > > >>>>> A less than helpful error message. Any insight into what might be > > >>>>> causing this? > > >>>>> > > >>>>> Thanks, > > >>>>> Les > > >>>>> _______________________________________________ > > >>>>> rspec-users mailing list > > >>>>> rspec-users at rubyforge.org > > >>>>> http://rubyforge.org/mailman/listinfo/rspec-users > > >>>>> > > >>>> _______________________________________________ > > >>>> rspec-users mailing list > > >>>> rspec-users at rubyforge.org > > >>>> http://rubyforge.org/mailman/listinfo/rspec-users > > >>> > > >>> _______________________________________________ > > >>> rspec-users mailing list > > >>> rspec-users at rubyforge.org > > >>> http://rubyforge.org/mailman/listinfo/rspec-users > > >> > > >> _______________________________________________ > > >> rspec-users mailing list > > >> rspec-users at rubyforge.org > > >> http://rubyforge.org/mailman/listinfo/rspec-users > > >> > > > _______________________________________________ > > > rspec-users mailing list > > > rspec-users at rubyforge.org > > > http://rubyforge.org/mailman/listinfo/rspec-users > > > > _______________________________________________ > > rspec-users mailing list > > rspec-users at rubyforge.org > > http://rubyforge.org/mailman/listinfo/rspec-users > > >
On Nov 11, 2007, at 5:40 PM, Brian Takita wrote:> On Nov 11, 2007 12:36 PM, Brian Takita <brian.takita at gmail.com> wrote: >> On Nov 11, 2007 8:29 AM, Leslie Freeman <leslief at sunquake.net> wrote: >>> Slowly digging to the bottom of this one. >>> >>> If I add >>> >>> Test::Unit::TestCase.fixture_path = RAILS_ROOT + ''/spec/fixtures/'' >>> >>> to my spec_helper.rb, then everything runs fine. So presumably there >>> is somewhere that config.fixture_path from the >>> Spec::Runner.configure >>> block is supposed to get put into Test::Unit::TestCase.fixture_path, >>> and for some reason that is no longer happening. I will continue to >>> dig into this problem, but if anyone is familiar with this part of >>> the rspec system and can help me get to the right place faster, I''d >>> sure appreciate it. >> It looks like rails changed. >> For now just set Test::Unit::TestCase.fixture_path. Ill come up >> with a >> fix in rspec core. > It should be fixed now in trunk.Finally got the chance to upgrade to the new trunk tonight. Everything works again without needing to explicitly set Test::Unit::TestCase.fixture_path. Thanks! Les>> >>> >>> Les >>> >>> >>> >>> On Nov 11, 2007, at 6:51 AM, David Chelimsky wrote: >>> >>>> On Nov 10, 2007 11:25 PM, Leslie Freeman <lesliefreeman3 at gmail.com> >>>> wrote: >>>>> To follow up on this a little more, I created a new project, froze >>>>> rails to edge (REVISION_8125), and installed rspec/rspec on rails >>>>> from trunk. Then I generated an rspec_model for Asset with the >>>>> following spec: >>>>> >>>>> require File.dirname(__FILE__) + ''/../spec_helper'' >>>>> >>>>> describe Asset do >>>>> before(:each) do >>>>> @asset = Asset.new >>>>> end >>>>> >>>>> it "should be valid" do >>>>> @asset.should be_valid >>>>> end >>>>> >>>>> it "should allow me to use fixture_file_upload" do >>>>> @asset.attributes = {:uploaded_data => fixture_file_upload >>>>> (''images/florence.jpg'', ''image/jpeg'')} >>>>> end >>>>> end >>>>> >>>>> I created an images directory in my spec/fixtures dir and added >>>>> florence.jpg to it. Then, when I run rake spec I get this error: >>>>> >>>>> NoMethodError in ''Asset should allow me to use >>>>> fixture_file_upload'' >>>> >>>> I am not familiar w/ fixture_file_upload myself. Is there anyone >>>> else >>>> on this list who is who can help Les debug this situation? >>>> >>>> Thanks, >>>> David >>>> >>>>> You have a nil object when you didn''t expect it! >>>>> You might have expected an instance of Array. >>>>> The error occurred while evaluating nil.+ >>>>> /Users/leslief/Sites/tmp/testapp/vendor/rails/actionpack/lib/ >>>>> action_controller/test_process.rb:480:in `fixture_file_upload'' >>>>> ./spec/models/asset_spec.rb:13: >>>>> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/ >>>>> dsl/ >>>>> example_group_methods.rb:40:in `instance_eval'' >>>>> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/ >>>>> dsl/ >>>>> example_group_methods.rb:40:in `run_example'' >>>>> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/ >>>>> dsl/ >>>>> example_runner.rb:63:in `run_example'' >>>>> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/ >>>>> dsl/ >>>>> example_runner.rb:24:in `run'' >>>>> /opt/local/lib/ruby/1.8/timeout.rb:48:in `timeout'' >>>>> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/ >>>>> dsl/ >>>>> example_runner.rb:22:in `run'' >>>>> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/ >>>>> dsl/ >>>>> example_suite.rb:26:in `rspec_run'' >>>>> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/ >>>>> dsl/ >>>>> example_suite.rb:22:in `each'' >>>>> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/ >>>>> dsl/ >>>>> example_suite.rb:22:in `rspec_run'' >>>>> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/ >>>>> test/ >>>>> unit/example_suite.rb:7:in `run'' >>>>> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/ >>>>> runner/ >>>>> behaviour_runner.rb:22:in `run'' >>>>> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/ >>>>> runner/ >>>>> behaviour_runner.rb:21:in `each'' >>>>> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/ >>>>> runner/ >>>>> behaviour_runner.rb:21:in `run'' >>>>> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/ >>>>> runner/ >>>>> options.rb:80:in `run_examples'' >>>>> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/lib/spec/ >>>>> runner/ >>>>> command_line.rb:19:in `run'' >>>>> /Users/leslief/Sites/tmp/testapp/vendor/plugins/rspec/bin/spec:3: >>>>> >>>>> line 13 of asset_spec.rb is @asset.attributes = >>>>> {:uploaded_data => >>>>> fixture_file_upload(''images/florence.jpg'', ''image/jpeg'')} >>>>> >>>>> the offending line in test_process.rb is: >>>>> Test::Unit::TestCase.respond_to?(:fixture_path) ? >>>>> Test::Unit::TestCase.fixture_path + path : path, mime_type, binary >>>>> >>>>> From the full function: >>>>> def fixture_file_upload(path, mime_type = nil, binary = false) >>>>> ActionController::TestUploadedFile.new( >>>>> Test::Unit::TestCase.respond_to?(:fixture_path) ? >>>>> Test::Unit::TestCase.fixture_path + path : path, >>>>> mime_type, >>>>> binary >>>>> ) >>>>> end >>>>> >>>>> so it seems like Test::Unit::TestCase.fixture_path is returning >>>>> nil. >>>>> I tried to do a little digging to find where this should be >>>>> getting >>>>> set, but quickly got way out to sea. >>>>> >>>>> My spec_helper does have this line: >>>>> config.fixture_path = RAILS_ROOT + ''/spec/fixtures/'' >>>>> >>>>> which seems right. I am hoping someone that knows more about the >>>>> inner gears of rspec has some insight as to why >>>>> Test::Unit::TestCase.fixture_path is nil. >>>>> >>>>> Thanks, >>>>> Les >>>>> >>>>> >>>>> >>>>> On Nov 9, 2007, at 8:25 AM, Leslie Freeman wrote: >>>>> >>>>>> >>>>>> On Nov 9, 2007, at 5:09 AM, David Chelimsky wrote: >>>>>> >>>>>>> On Nov 8, 2007 11:25 PM, Leslie Freeman >>>>>>> <lesliefreeman3 at gmail.com> >>>>>>> wrote: >>>>>>>> Hi all, >>>>>>>> I had some specs that were using fixture_file_upload that were >>>>>>>> passing just fine. Then I froze edge rails to get some 2.0 >>>>>>>> functionality, then a I upgraded to trunk rspec to deal with >>>>>>>> >>>>>>>> uninitialized constant >>>>>>>> ActionView::Helpers::JavaScriptMacrosHelper >>>>>>>> >>>>>>>> After a couple other of tribulations, I have now gotten down to >>>>>>>> just >>>>>>>> a couple of not passing specs, all using the >>>>>>>> fixture_file_upload. >>>>>>>> Here''s an example >>>>>>>> >>>>>>>> it "should be invalid if uploaded file is not an image" do >>>>>>>> @image.attributes = valid_image_attributes.merge >>>>>>>> ({:uploaded_data >>>>>>>> => fixture_file_upload(''/textfile.txt'', >>>>>>>> >>>>>>>> ''text/plain'')}) >>>>>>>> @image.should_not be_valid >>>>>>>> # content_type: is not included in the list >>>>>>>> @image.should have(1).error_on(:content_type) >>>>>>>> end >>>>>>>> >>>>>>>> which fails with: >>>>>>>> 2) >>>>>>>> NoMethodError in ''Image unsaved should be invalid if uploaded >>>>>>>> file is >>>>>>>> not an image'' >>>>>>>> You have a nil object when you didn''t expect it! >>>>>>>> You might have expected an instance of Array. >>>>>>>> The error occurred while evaluating nil.+ >>>>>>>> ./spec/models/image_spec.rb:25: >>>>>>> >>>>>>> What''s on line 25? >>>>>> >>>>>> Sorry about that confusion. Line 25 is: >>>>>> >>>>>> @image.attributes = valid_image_attributes.merge >>>>>> ({:uploaded_data => >>>>>> fixture_file_upload(''/textfile.txt'',text/plain'')}) >>>>>> >>>>>> (textfile.txt is located in my /spec/fixtures/ dir.) >>>>>> >>>>>> That line doesn''t throw the error if I change it to something >>>>>> like: >>>>>> @image.attributes = valid_image_attributes.merge >>>>>> ({:uploaded_data => >>>>>> "foo"}) >>>>>> >>>>>> But of course the spec fails. :) >>>>>> >>>>>> Leslie >>>>>> >>>>>>> >>>>>>>> >>>>>>>> A less than helpful error message. Any insight into what >>>>>>>> might be >>>>>>>> causing this? >>>>>>>> >>>>>>>> Thanks, >>>>>>>> Les >>>>>>>> _______________________________________________ >>>>>>>> rspec-users mailing list >>>>>>>> rspec-users at rubyforge.org >>>>>>>> http://rubyforge.org/mailman/listinfo/rspec-users >>>>>>>> >>>>>>> _______________________________________________ >>>>>>> rspec-users mailing list >>>>>>> rspec-users at rubyforge.org >>>>>>> http://rubyforge.org/mailman/listinfo/rspec-users >>>>>> >>>>>> _______________________________________________ >>>>>> rspec-users mailing list >>>>>> rspec-users at rubyforge.org >>>>>> http://rubyforge.org/mailman/listinfo/rspec-users >>>>> >>>>> _______________________________________________ >>>>> rspec-users mailing list >>>>> rspec-users at rubyforge.org >>>>> http://rubyforge.org/mailman/listinfo/rspec-users >>>>> >>>> _______________________________________________ >>>> rspec-users mailing list >>>> rspec-users at rubyforge.org >>>> http://rubyforge.org/mailman/listinfo/rspec-users >>> >>> _______________________________________________ >>> rspec-users mailing list >>> rspec-users at rubyforge.org >>> http://rubyforge.org/mailman/listinfo/rspec-users >>> >> > _______________________________________________ > rspec-users mailing list > rspec-users at rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users
Maybe Matching Threads
- rspec causing validates_presence_of to validate twice?
- How to test views with Nested Resources and Partials
- [Rails 3.2.5] Rails: unit test fixture_path : fixture_file_upload cannot find the file ...
- Attachment-fu + Story Runner
- attachment_fu and story runner, any updates