Forum: RSpec [Cucumber] Running single feature from command line

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.
4ac14a1dba64476ea6efefbf021d6807?d=identicon&s=25 Mark Lynn (Guest)
on 2009-03-31 15:04
(Received via mailing list)
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:in
`require'
  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:in `each'
  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:in `initialize'
  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:in `parse_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:in `load'
  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 Lynn
Sabado Technologies
3c28deaff162aeda44f2e0bcdca1dacf?d=identicon&s=25 Joseph Wilk (josephwilk)
on 2009-03-31 15:30
(Received via mailing list)
Mark Lynn 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 Wilk
http://blog.josephwilk.net
4ac14a1dba64476ea6efefbf021d6807?d=identicon&s=25 Mark Lynn (Guest)
on 2009-03-31 17:26
(Received via mailing list)
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:in `require'
  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:in `each'
  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:in `initialize'
  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:in `parse_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:in `execute'
  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 Lynn
Sabado Technologies
4ac14a1dba64476ea6efefbf021d6807?d=identicon&s=25 Mark Lynn (Guest)
on 2009-03-31 17:50
(Received via mailing list)
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:in `require'
  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:in `each'
  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:in `initialize'
  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:in `parse_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:in `execute'
  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 Lynn
Sabado Technologies
0be0e4aa42aacd9a8a95c792de273ca7?d=identicon&s=25 Aslak Hellesøy (aslakhellesoy)
on 2009-03-31 18:59
(Received via mailing list)
On Tue, Mar 31, 2009 at 5:22 PM, Mark Lynn <mark@sabado.com> 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-rspe...

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

Aslak
3c28deaff162aeda44f2e0bcdca1dacf?d=identicon&s=25 Joseph Wilk (josephwilk)
on 2009-03-31 19:36
(Received via mailing list)
Mark Lynn 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:in
> `execute'
>     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
4ac14a1dba64476ea6efefbf021d6807?d=identicon&s=25 Mark Lynn (Guest)
on 2009-03-31 20:00
(Received via mailing list)
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 Lynn
Sabado Technologies
4ac14a1dba64476ea6efefbf021d6807?d=identicon&s=25 Mark Lynn (Guest)
on 2009-04-01 00:39
(Received via mailing list)
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 Lynn
Sabado Technologies
This topic is locked and can not be replied to.