[Cucumber] Running single feature from command line

I am using Cucumber 0.2.3 and am having problems running a single
feature. In particular, the cucumber Textmate bundle was not working
so I traced it back and discovered that I could not run single files
or features from the command line either. My setup has the following
line in cucumber.yml

default: -r features/support/env.rb -r features/support/plain.rb -r
features/steps features/plain

When I run just plain cucumber from the command line, all my scenarios
run and all features pass. However, if I try to run the command

cucumber -r features/support/env.rb -r features/support/plain.rb -r
features/steps features/plain

OR

cucumber -r features/support/env.rb -r features/support/plain.rb -r
features/steps features/plain/login.feature

I get

Failed to load features/support/env.rb from /Library/Ruby/Site/1.8/
rubygems/custom_require.rb:31:in polyglot_original_require' from /Library/Ruby/Gems/1.8/gems/polyglot-0.2.5/lib/polyglot.rb:54:inrequire’
from /Library/Ruby/Gems/1.8/gems/rspec-1.2.2/lib/spec/runner/
option_parser.rb:144:in invoke_requires' from /Library/Ruby/Gems/1.8/gems/rspec-1.2.2/lib/spec/runner/ option_parser.rb:143:ineach’
from /Library/Ruby/Gems/1.8/gems/rspec-1.2.2/lib/spec/runner/
option_parser.rb:143:in invoke_requires' from /Library/Ruby/Gems/1.8/gems/rspec-1.2.2/lib/spec/runner/ option_parser.rb:104:ininitialize’
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/
ruby/1.8/optparse.rb:1291:in call' from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ ruby/1.8/optparse.rb:1291:inparse_in_order’
… 31 levels…
from /Library/Ruby/Gems/1.8/gems/cucumber-0.2.3/bin/…/lib/cucumber/
cli/main.rb:20:in execute' from /Library/Ruby/Gems/1.8/gems/cucumber-0.2.3/bin/cucumber:6 from /usr/bin/cucumber:19:inload’
from /usr/bin/cucumber:19

I’m assuming the repeated use of the -r flag is not acceptable, but I
need to specify multiple files. How can I get this to work from the
command line so I can also use it in Textmate?

  • Mark

Mark L.
Sabado Technologies

Mark L. wrote:

run and all features pass. However, if I try to run the command

/Library/Ruby/Gems/1.8/gems/rspec-1.2.2/lib/spec/runner/option_parser.rb:143:in
from
I’m assuming the repeated use of the -r flag is not acceptable, but I
need to specify multiple files.

Cucumber will accept multiple -r or --require. It simply pushes all the
requires onto a stack and requires them all.

Looks like this is a polygot problem. Aslak recently forked and patched
a copy of Treetop to avoid the dependency on this:

git://github.com/aslakhellesoy/treetop.git

I would suggest you try and install treetop from this source and see if
that fixes the problem.

HTH

Joseph W.
http://blog.josephwilk.net

Joseph,

Thanks - treetop did get me past the previous error message. Now, I get

$ cucumber -r features/support/env.rb -r features/support/plain.rb -r
features/steps features/plain
/Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in
gem_original_require': no such file to load -- features/steps (LoadError) Failed to load features/support/env.rb from /Library/Ruby/Site/1.8/ rubygems/custom_require.rb:31:inrequire’
from /Library/Ruby/Gems/1.8/gems/rspec-1.2.2/lib/spec/runner/
option_parser.rb:144:in invoke_requires' from /Library/Ruby/Gems/1.8/gems/rspec-1.2.2/lib/spec/runner/ option_parser.rb:143:ineach’
from /Library/Ruby/Gems/1.8/gems/rspec-1.2.2/lib/spec/runner/
option_parser.rb:143:in invoke_requires' from /Library/Ruby/Gems/1.8/gems/rspec-1.2.2/lib/spec/runner/ option_parser.rb:104:ininitialize’
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/
ruby/1.8/optparse.rb:1291:in call' from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ ruby/1.8/optparse.rb:1291:inparse_in_order’
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/
ruby/1.8/optparse.rb:1247:in catch' ... 26 levels... from /Library/Ruby/Gems/1.8/gems/cucumber-0.2.3/bin/../lib/cucumber/ cli/main.rb:20:inexecute’
from /Library/Ruby/Gems/1.8/gems/cucumber-0.2.3/bin/cucumber:6
from /usr/bin/cucumber:19:in `load’
from /usr/bin/cucumber:19

It seems weird that these exact options work in the cucumber.yml file,
but not from the command line. Any other thoughts?

  • Mark

Mark L.
Sabado Technologies

When I use Aslak’s version of Treetop as Joseph suggested, this does
get rid of the polyglot error. However, I still get the following when
running from the command line:

$ cucumber -r features/steps -r features/support/env.rb features/plain/
user_home_page.feature
/Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in
gem_original_require': no such file to load -- features/steps (LoadError) Failed to load features/support/env.rb from /Library/Ruby/Site/1.8/ rubygems/custom_require.rb:31:inrequire’
from /Library/Ruby/Gems/1.8/gems/rspec-1.2.2/lib/spec/runner/
option_parser.rb:144:in invoke_requires' from /Library/Ruby/Gems/1.8/gems/rspec-1.2.2/lib/spec/runner/ option_parser.rb:143:ineach’
from /Library/Ruby/Gems/1.8/gems/rspec-1.2.2/lib/spec/runner/
option_parser.rb:143:in invoke_requires' from /Library/Ruby/Gems/1.8/gems/rspec-1.2.2/lib/spec/runner/ option_parser.rb:104:ininitialize’
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/
ruby/1.8/optparse.rb:1291:in call' from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ ruby/1.8/optparse.rb:1291:inparse_in_order’
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/
ruby/1.8/optparse.rb:1247:in catch' ... 26 levels... from /Library/Ruby/Gems/1.8/gems/cucumber-0.2.3/bin/../lib/cucumber/ cli/main.rb:20:inexecute’
from /Library/Ruby/Gems/1.8/gems/cucumber-0.2.3/bin/cucumber:6
from /usr/bin/cucumber:19:in `load’
from /usr/bin/cucumber:19

Any idea why rspec code is being called here? I did discover that if I
uninstall cucumber 0.2.3 and try version 0.1.16, then the above
command line works as does using the profile. I’m not sure if this
indicates a bug in 0.2.3.

Mark L.
Sabado Technologies

On Tue, Mar 31, 2009 at 5:22 PM, Mark L. [email protected] wrote:

/Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in `require’
/Library/Ruby/Gems/1.8/gems/rspec-1.2.2/lib/spec/runner/option_parser.rb:104:in
… 26 levels…
0.2.3.

It’s actually a bug in RSpec that is only triggered in Cucumber 0.2
(bin/cucumber used to consume ARGV, but now leaves it intact, and RSpec
blows up).

https://rspec.lighthouseapp.com/projects/16211/tickets/200
https://rspec.lighthouseapp.com/projects/5645-rspec/tickets/767

Do you have a Rails app? See how Chris F. got around the error in
the
#200 ticket.

Aslak

Mark L. wrote:

Failed to load features/support/env.rb from
from
catch' ... 26 levels... from /Library/Ruby/Gems/1.8/gems/cucumber-0.2.3/bin/../lib/cucumber/cli/main.rb:20:inexecute’
from /Library/Ruby/Gems/1.8/gems/cucumber-0.2.3/bin/cucumber:6
from /usr/bin/cucumber:19:in `load’
from /usr/bin/cucumber:19

Just a gut feeling but try:

cucumber -r features/steps/ -r features/support/env.rb
features/plain/user_home_page.feature

Aslak,

Thanks! It is nice to at least know where the problem is. I am
actually using Cucumber in a Merb project so the Rails solution does
not help, but I will look for another workaround and post if I find
something.

Mark L.
Sabado Technologies

FYI: I did confirm the problem was the RSpec issue Aslak mentioned. I
did not see a nice solution without messing around with the RSpec gem,
and am I familiar enough with the RSpec code to patch it at this time.
I ended up throwing a constant in my support/env.rb file and testing
for this in the RSpec spec/runner.rb file. Sloppy workaround, but I
needed to move on.

Thanks to Joseph and Aslak for their comments.

Mark L.
Sabado Technologies

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs