Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error in step_match.rb file. Method replace_arguments #188

Closed
korsakovs opened this issue Nov 29, 2011 · 9 comments
Closed

Error in step_match.rb file. Method replace_arguments #188

korsakovs opened this issue Nov 29, 2011 · 9 comments
Assignees
Labels
🚦 needs tests Needs tests
Milestone

Comments

@korsakovs
Copy link

I've checked is cucumber v.1.1.3 and it raises an exception for the following step:

When /^I do something( with note "[^"]+")?$/ do | note |
#  Some code here
end

Exception:
(Yes, I am using jruby)

undefined method `length' for nil:NilClass (NoMethodError)
/opt/jruby-1.6.2/lib/ruby/gems/1.8/gems/cucumber-1.1.3/bin/../lib/cucumber/step_match.rb:73:in `replace_arguments'
org/jruby/RubyArray.java:1602:in `each'

/opt/jruby-1.6.2/lib/ruby/gems/1.8/gems/cucumber-1.1.3/bin/../lib/cucumber/step_match.rb:62:in `replace_arguments'
/opt/jruby-1.6.2/lib/ruby/gems/1.8/gems/cucumber-1.1.3/bin/../lib/cucumber/step_match.rb:44:in `format_args'
/opt/jruby-1.6.2/lib/ruby/gems/1.8/gems/cucumber-1.1.3/bin/../lib/cucumber/formatter/console.rb:25:in `format_step'
/opt/jruby-1.6.2/lib/ruby/gems/1.8/gems/cucumber-1.1.3/bin/../lib/cucumber/formatter/pretty.rb:151:in `step_name'
org/jruby/RubyKernel.java:2071:in `send'
/opt/jruby-1.6.2/lib/ruby/gems/1.8/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/tree_walker.rb:173:in `send_to_all'
org/jruby/RubyArray.java:1602:in `each'
/opt/jruby-1.6.2/lib/ruby/gems/1.8/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/tree_walker.rb:171:in `send_to_all'
/opt/jruby-1.6.2/lib/ruby/gems/1.8/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/tree_walker.rb:166:in `broadcast'
/opt/jruby-1.6.2/lib/ruby/gems/1.8/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/tree_walker.rb:112:in `visit_step_name'
/opt/jruby-1.6.2/lib/ruby/gems/1.8/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/tree_walker.rb:105:in `visit_step_result'
/opt/jruby-1.6.2/lib/ruby/gems/1.8/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/tree_walker.rb:163:in `broadcast'
/opt/jruby-1.6.2/lib/ruby/gems/1.8/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/tree_walker.rb:104:in `visit_step_result'
/opt/jruby-1.6.2/lib/ruby/gems/1.8/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/step_invocation.rb:46:in `visit_step_result'
/opt/jruby-1.6.2/lib/ruby/gems/1.8/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/step_invocation.rb:39:in `accept'
/opt/jruby-1.6.2/lib/ruby/gems/1.8/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/tree_walker.rb:99:in `visit_step'
/opt/jruby-1.6.2/lib/ruby/gems/1.8/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/tree_walker.rb:163:in `broadcast'
/opt/jruby-1.6.2/lib/ruby/gems/1.8/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/tree_walker.rb:98:in `visit_step'
/opt/jruby-1.6.2/lib/ruby/gems/1.8/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/step_collection.rb:15:in `accept'
org/jruby/RubyArray.java:1602:in `each'
/opt/jruby-1.6.2/lib/ruby/gems/1.8/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/step_collection.rb:14:in `accept'
/opt/jruby-1.6.2/lib/ruby/gems/1.8/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/tree_walker.rb:93:in `visit_steps'
/opt/jruby-1.6.2/lib/ruby/gems/1.8/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/tree_walker.rb:163:in `broadcast'
/opt/jruby-1.6.2/lib/ruby/gems/1.8/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/tree_walker.rb:92:in `visit_steps'
/opt/jruby-1.6.2/lib/ruby/gems/1.8/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/scenario.rb:55:in `accept'
/opt/jruby-1.6.2/lib/ruby/gems/1.8/gems/cucumber-1.1.3/bin/../lib/cucumber/runtime.rb:80:in `with_hooks'
/opt/jruby-1.6.2/lib/ruby/gems/1.8/gems/cucumber-1.1.3/bin/../lib/cucumber/runtime.rb:96:in `before_and_after'
/opt/jruby-1.6.2/lib/ruby/gems/1.8/gems/cucumber-1.1.3/bin/../lib/cucumber/runtime.rb:79:in `with_hooks'
org/jruby/RubyProc.java:268:in `call'
org/jruby/RubyProc.java:228:in `call'
/opt/jruby-1.6.2/lib/ruby/gems/1.8/gems/cucumber-1.1.3/bin/../lib/cucumber/runtime/support_code.rb:120:in `around'
/opt/jruby-1.6.2/lib/ruby/gems/1.8/gems/cucumber-1.1.3/bin/../lib/cucumber/language_support/language_methods.rb:9:in `around'
org/jruby/RubyProc.java:268:in `call'
org/jruby/RubyProc.java:228:in `call'
/opt/jruby-1.6.2/lib/ruby/gems/1.8/gems/cucumber-1.1.3/bin/../lib/cucumber/language_support/language_methods.rb:91:in `execute_around'
/opt/jruby-1.6.2/lib/ruby/gems/1.8/gems/cucumber-1.1.3/bin/../lib/cucumber/language_support/language_methods.rb:8:in `around'
/opt/jruby-1.6.2/lib/ruby/gems/1.8/gems/cucumber-1.1.3/bin/../lib/cucumber/runtime/support_code.rb:119:in `around'
org/jruby/RubyProc.java:268:in `call'
org/jruby/RubyProc.java:228:in `call'
/opt/jruby-1.6.2/lib/ruby/gems/1.8/gems/cucumber-1.1.3/bin/../lib/cucumber/runtime/support_code.rb:117:in `around'
/opt/jruby-1.6.2/lib/ruby/gems/1.8/gems/cucumber-1.1.3/bin/../lib/cucumber/runtime.rb:91:in `around'
/opt/jruby-1.6.2/lib/ruby/gems/1.8/gems/cucumber-1.1.3/bin/../lib/cucumber/runtime.rb:78:in `with_hooks'
/opt/jruby-1.6.2/lib/ruby/gems/1.8/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/scenario.rb:53:in `accept'
/opt/jruby-1.6.2/lib/ruby/gems/1.8/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/scenario.rb:108:in `with_visitor'
/opt/jruby-1.6.2/lib/ruby/gems/1.8/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/scenario.rb:47:in `accept'
/opt/jruby-1.6.2/lib/ruby/gems/1.8/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/tree_walker.rb:51:in `visit_feature_element'
/opt/jruby-1.6.2/lib/ruby/gems/1.8/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/tree_walker.rb:163:in `broadcast'
/opt/jruby-1.6.2/lib/ruby/gems/1.8/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/tree_walker.rb:50:in `visit_feature_element'
/opt/jruby-1.6.2/lib/ruby/gems/1.8/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/feature.rb:43:in `accept'
org/jruby/RubyArray.java:1602:in `each'
/opt/jruby-1.6.2/lib/ruby/gems/1.8/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/feature.rb:42:in `accept'
/opt/jruby-1.6.2/lib/ruby/gems/1.8/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/tree_walker.rb:20:in `visit_feature'
/opt/jruby-1.6.2/lib/ruby/gems/1.8/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/tree_walker.rb:163:in `broadcast'
/opt/jruby-1.6.2/lib/ruby/gems/1.8/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/tree_walker.rb:19:in `visit_feature'
/opt/jruby-1.6.2/lib/ruby/gems/1.8/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/features.rb:29:in `accept'
org/jruby/RubyArray.java:1602:in `each'
/opt/jruby-1.6.2/lib/ruby/gems/1.8/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/features.rb:17:in `each'
/opt/jruby-1.6.2/lib/ruby/gems/1.8/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/features.rb:28:in `accept'
/opt/jruby-1.6.2/lib/ruby/gems/1.8/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/tree_walker.rb:14:in `visit_features'
/opt/jruby-1.6.2/lib/ruby/gems/1.8/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/tree_walker.rb:163:in `broadcast'
/opt/jruby-1.6.2/lib/ruby/gems/1.8/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/tree_walker.rb:13:in `visit_features'
/opt/jruby-1.6.2/lib/ruby/gems/1.8/gems/cucumber-1.1.3/bin/../lib/cucumber/runtime.rb:46:in `run!'
/opt/jruby-1.6.2/lib/ruby/gems/1.8/gems/cucumber-1.1.3/bin/../lib/cucumber/cli/main.rb:43:in `execute!'
/opt/jruby-1.6.2/lib/ruby/gems/1.8/gems/cucumber-1.1.3/bin/../lib/cucumber/cli/main.rb:20:in `execute'
/opt/jruby-1.6.2/lib/ruby/gems/1.8/gems/cucumber-1.1.3/bin/cucumber:14:in `(root)'
org/jruby/RubyKernel.java:1063:in `load'
/opt/jruby/bin/cucumber:19:in `(root)'

Everything ok when I'm using cucumber v.1.1.1.

Thanks

@korsakovs
Copy link
Author

Forgot to say...

Exception is raising when I am using following step in feature:

When I do something

@heisee
Copy link

heisee commented Nov 30, 2011

Hmm, I got the same error after bundle update. Stacktrace is:

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.length (NoMethodError)
/home/hk/.rvm/gems/jruby-1.6.5@us/gems/cucumber-1.1.3/bin/../lib/cucumber/step_match.rb:77:in `replace_arguments'
/home/hk/.rvm/gems/jruby-1.6.5@us/gems/cucumber-1.1.3/bin/../lib/cucumber/step_match.rb:62:in `each'
/home/hk/.rvm/gems/jruby-1.6.5@us/gems/cucumber-1.1.3/bin/../lib/cucumber/step_match.rb:62:in `replace_arguments'
/home/hk/.rvm/gems/jruby-1.6.5@us/gems/cucumber-1.1.3/bin/../lib/cucumber/step_match.rb:44:in `format_args'
/home/hk/.rvm/gems/jruby-1.6.5@us/gems/cucumber-1.1.3/lib/cucumber/formatter/console.rb:25:in `format_step'
/home/hk/.rvm/gems/jruby-1.6.5@us/gems/cucumber-1.1.3/lib/cucumber/formatter/pretty.rb:151:in `step_name'
/home/hk/.rvm/gems/jruby-1.6.5@us/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/tree_walker.rb:173:in `send'
/home/hk/.rvm/gems/jruby-1.6.5@us/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/tree_walker.rb:173:in `send_to_all'
/home/hk/.rvm/gems/jruby-1.6.5@us/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/tree_walker.rb:171:in `each'
/home/hk/.rvm/gems/jruby-1.6.5@us/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/tree_walker.rb:171:in `send_to_all'
/home/hk/.rvm/gems/jruby-1.6.5@us/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/tree_walker.rb:166:in `broadcast'
/home/hk/.rvm/gems/jruby-1.6.5@us/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/tree_walker.rb:112:in `visit_step_name'
/home/hk/.rvm/gems/jruby-1.6.5@us/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/tree_walker.rb:105:in `visit_step_result'
/home/hk/.rvm/gems/jruby-1.6.5@us/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/tree_walker.rb:163:in `broadcast'
/home/hk/.rvm/gems/jruby-1.6.5@us/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/tree_walker.rb:104:in `visit_step_result'
/home/hk/.rvm/gems/jruby-1.6.5@us/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/step_invocation.rb:46:in `visit_step_result'
/home/hk/.rvm/gems/jruby-1.6.5@us/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/step_invocation.rb:39:in `accept'
/home/hk/.rvm/gems/jruby-1.6.5@us/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/tree_walker.rb:99:in `visit_step'
/home/hk/.rvm/gems/jruby-1.6.5@us/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/tree_walker.rb:163:in `broadcast'
/home/hk/.rvm/gems/jruby-1.6.5@us/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/tree_walker.rb:98:in `visit_step'
/home/hk/.rvm/gems/jruby-1.6.5@us/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/step_collection.rb:15:in `accept'
/home/hk/.rvm/gems/jruby-1.6.5@us/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/step_collection.rb:14:in `each'
/home/hk/.rvm/gems/jruby-1.6.5@us/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/step_collection.rb:14:in `accept'
/home/hk/.rvm/gems/jruby-1.6.5@us/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/tree_walker.rb:93:in `visit_steps'
/home/hk/.rvm/gems/jruby-1.6.5@us/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/tree_walker.rb:163:in `broadcast'
/home/hk/.rvm/gems/jruby-1.6.5@us/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/tree_walker.rb:92:in `visit_steps'
/home/hk/.rvm/gems/jruby-1.6.5@us/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/background.rb:41:in `accept'
/home/hk/.rvm/gems/jruby-1.6.5@us/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/background.rb:52:in `with_visitor'
/home/hk/.rvm/gems/jruby-1.6.5@us/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/scenario.rb:108:in `with_visitor'
/home/hk/.rvm/gems/jruby-1.6.5@us/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/background.rb:51:in `with_visitor'
/home/hk/.rvm/gems/jruby-1.6.5@us/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/background.rb:38:in `accept'
/home/hk/.rvm/gems/jruby-1.6.5@us/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/tree_walker.rb:57:in `visit_background'
/home/hk/.rvm/gems/jruby-1.6.5@us/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/tree_walker.rb:163:in `broadcast'
/home/hk/.rvm/gems/jruby-1.6.5@us/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/tree_walker.rb:56:in `visit_background'
/home/hk/.rvm/gems/jruby-1.6.5@us/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/feature.rb:41:in `accept'
/home/hk/.rvm/gems/jruby-1.6.5@us/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/tree_walker.rb:20:in `visit_feature'
/home/hk/.rvm/gems/jruby-1.6.5@us/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/tree_walker.rb:163:in `broadcast'
/home/hk/.rvm/gems/jruby-1.6.5@us/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/tree_walker.rb:19:in `visit_feature'
/home/hk/.rvm/gems/jruby-1.6.5@us/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/features.rb:29:in `accept'
/home/hk/.rvm/gems/jruby-1.6.5@us/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/features.rb:17:in `each'
/home/hk/.rvm/gems/jruby-1.6.5@us/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/features.rb:17:in `each'
/home/hk/.rvm/gems/jruby-1.6.5@us/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/features.rb:28:in `accept'
/home/hk/.rvm/gems/jruby-1.6.5@us/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/tree_walker.rb:14:in `visit_features'
/home/hk/.rvm/gems/jruby-1.6.5@us/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/tree_walker.rb:163:in `broadcast'
/home/hk/.rvm/gems/jruby-1.6.5@us/gems/cucumber-1.1.3/bin/../lib/cucumber/ast/tree_walker.rb:13:in `visit_features'
/home/hk/.rvm/gems/jruby-1.6.5@us/gems/cucumber-1.1.3/bin/../lib/cucumber/runtime.rb:46:in `run!'
/home/hk/.rvm/gems/jruby-1.6.5@us/gems/cucumber-1.1.3/bin/../lib/cucumber/cli/main.rb:43:in `execute!'
/home/hk/.rvm/gems/jruby-1.6.5@us/gems/cucumber-1.1.3/bin/../lib/cucumber/cli/main.rb:20:in `execute'
/home/hk/.rvm/gems/jruby-1.6.5@us/gems/cucumber-1.1.3/bin/cucumber:14:in `(root)'
/home/hk/.rvm/gems/jruby-1.6.5@us/bin/cucumber:19:in `load'
/home/hk/.rvm/gems/jruby-1.6.5@us/bin/cucumber:19:in `(root)'

It worked with cucumber 1.1.1, the line was very simple:
When a user "peter" is registered with password "secret"

Current workaround: simply stick to 1.1.1:
gem "cucumber", "=1.1.1"

@heisee
Copy link

heisee commented Feb 16, 2012

fyi: this problem still exists in version 1.1.4

@treyhyde
Copy link

treyhyde commented Mar 4, 2012

This wasn't a problem in cucumber 1.0. In 1.1 this happens when a step has an optional argument.

centraldesktop pushed a commit to centraldesktop/cucumber that referenced this issue Mar 4, 2012
Prevents fatal exception when a step is executed but not all matches have a hit (optional matches ... think a re with (\w)?
avalanche123 added a commit to avalanche123/cucumber that referenced this issue Mar 8, 2012
@heisee
Copy link

heisee commented Apr 4, 2012

@avalanche123: yeah, looks fine. Until now it's not build into master.
Quite strange, it looks like this issue only happens in JRuby....

@os97673
Copy link
Member

os97673 commented Mar 6, 2013

BTW it looks like the problem is not reproducible with jruby 1.7.X
Most likely the cause of the problem is in jruby's version of regexp library

@ghost ghost assigned os97673 Mar 6, 2013
@mattwynne
Copy link
Member

@os97673 shall we close this ticket then?

@os97673
Copy link
Member

os97673 commented Mar 7, 2013

@mattwynne yes, let's close it.
@heisee @avalanche123 @treyhyde If someone has test which reproduce the problem feel free to reopen the ticket with the test provided

@os97673 os97673 closed this as completed Mar 7, 2013
@lock
Copy link

lock bot commented Oct 25, 2018

This thread has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.

@lock lock bot locked as resolved and limited conversation to collaborators Oct 25, 2018
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
🚦 needs tests Needs tests
Projects
None yet
Development

No branches or pull requests

5 participants