Forum: RSpec Cucumber dying on decrement_open_transactions

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Wincent C. (Guest)
on 2009-01-18 20:12
(Received via mailing list)
I am trying to convert from Story Runner to Cucumber so have started
with a really minimal story, but am dying with exceptions in
ActiveRecord's decrement_open_transactions method. I started took my
shortest story and trimmed off steps until I got it down to the
minimal case that aborts:

   Feature: accessing the wiki index
     As a user
     I want to view the wiki index
     So that I can get an overview of what is available

     Scenario: the wiki has no article
       Given no articles in the wiki
       When I access the wiki index
       Then I should see "Recently updated"

The corresponding steps are:

   Given /^no articles in the wiki$/ do
     Article.destroy_all
   end

   When /^I access the wiki index$/ do
     get '/wiki'
   end

But I die with:

Feature: accessing the wiki index  # features/wiki.feature
   As a user
   I want to view the wiki index
   So that I can get an overview of what is available
   Scenario: the wiki has no article       # features/wiki.feature:6
     Given no articles in the wiki         # features/step_definitions/
wiki.rb:1
     When I access the wiki index          # features/step_definitions/
wiki.rb:9
     Then I should see "Recently updated"  # features/step_definitions/
webrat_steps.rb:83
/Users/wincent/demo/src/vendor/rails/activerecord/lib/active_record/
connection_adapters/abstract_adapter.rb:159:in
`decrement_open_transactions': You have a nil object when you didn't
expect it! (NoMethodError)
You might have expected an instance of Array.
The error occurred while evaluating nil.-  from /Library/Ruby/Gems/1.8/
gems/cucumber-0.1.15/bin/../lib/cucumber/rails/world.rb:60:in
`__cucumber_26364730'

I can make the error go away if I comment out:

   Cucumber::Rails.use_transactional_fixtures

But I'd like to understand why it doesn't work with the default
setting, just in case I am doing something wrong.

Cheers,
Wincent
Ben M. (Guest)
on 2009-01-18 20:57
(Received via mailing list)
On 1/18/09 10:18 AM, Wincent C. wrote:
>
>
>   Scenario: the wiki has no article       # features/wiki.feature:6
> The error occurred while evaluating nil.-    from
> /Library/Ruby/Gems/1.8/gems/cucumber-0.1.15/bin/../lib/cucumber/rails/world.rb:60:in
> `__cucumber_26364730'
>
> I can make the error go away if I comment out:
>
>   Cucumber::Rails.use_transactional_fixtures
>
> But I'd like to understand why it doesn't work with the default
> setting, just in case I am doing something wrong.

 From what I can see I don't believe you are doing anything wrong.
What DB are you using?  Perhaps your adapter doesn't support
transactions? (just a wild guess)

-Ben
Mark W. (Guest)
on 2009-01-18 21:18
(Received via mailing list)
On Sun, Jan 18, 2009 at 9:18 AM, Wincent C. 
<removed_email_address@domain.invalid>
wrote:


> I am trying to convert from Story Runner to Cucumber so have started with a
> really minimal story, but am dying with exceptions in ActiveRecord's
> decrement_open_transactions method. I started took my shortest story and
> trimmed off steps until I got it down to the minimal case that aborts:
>

I filed a ticket on this yesterday:
http://rspec.lighthouseapp.com/projects/16211/tick...

Perhaps you could attach your test case to it?

///ark

 Feature: accessing the wiki index
Ben M. (Guest)
on 2009-01-18 22:20
(Received via mailing list)
On 1/18/09 10:18 AM, Wincent C. wrote:
>
>
>   Scenario: the wiki has no article       # features/wiki.feature:6
> The error occurred while evaluating nil.-    from
> Cheers,
> Wincent
>
>
Looking at the line in the adapter where it is failing I see:
def decrement_open_transactions
     @open_transactions -= 1
end

I can't figure out how @open_transactions would ever be nil.  I think
your best chance to figure it out would be to step through the code with
rubydebug starting in cucumber/rails/world.rb. (That is where the
transactions are incremented and decremented.)

-Ben
This topic is locked and can not be replied to.