I'm getting the following stack trace when a step has ambiguous matches and I've told cucumber to --guess.
[java] And the RRLP message should have a Reference Number component # spc$_run_closure3@4a4854f6
[java] undefined method `jlength' for "/RRLP/n":String (NoMethodError)
[java] /home/jacob/cucumber/bin/../lib/cucumber/language_support/step_definition_methods.rb:42:in `text_length'
[java] /home/jacob/cucumber/bin/../lib/cucumber/step_match.rb:32:in `text_length'
[java] /home/jacob/cucumber/bin/../lib/cucumber/step_mother.rb:170:in `best_matches'
[java] /home/jacob/cucumber/bin/../lib/cucumber/step_mother.rb:170:in `map'
[java] /home/jacob/cucumber/bin/../lib/cucumber/step_mother.rb:170:in `best_matches'
[java] /home/jacob/cucumber/bin/../lib/cucumber/step_mother.rb:159:in `step_match'
[java] /home/jacob/cucumber/bin/../lib/cucumber/ast/step_invocation.rb:61:in `find_step_match!'
[java] /home/jacob/cucumber/bin/../lib/cucumber/ast/step_invocation.rb:38:in `invoke'
[java] /home/jacob/cucumber/bin/../lib/cucumber/ast/step_invocation.rb:29:in `accept'
[java] /home/jacob/cucumber/bin/../lib/cucumber/ast/visitor.rb:76:in `visit_step'
[java] /home/jacob/cucumber/bin/../lib/cucumber/formatter/pretty.rb:145:in `visit_step'
[java] /home/jacob/cucumber/bin/../lib/cucumber/ast/step_collection.rb:15:in `accept'
[java] /home/jacob/cucumber/bin/../lib/cucumber/ast/step_collection.rb:14:in `each'
[java] /home/jacob/cucumber/bin/../lib/cucumber/ast/step_collection.rb:14:in `accept'
[java] /home/jacob/cucumber/bin/../lib/cucumber/ast/visitor.rb:72:in `visit_steps'
[java] /home/jacob/cucumber/bin/../lib/cucumber/ast/scenario.rb:33:in `accept'
[java] /home/jacob/cucumber/bin/../lib/cucumber/step_mother.rb:199:in `before_and_after'
[java] /home/jacob/cucumber/bin/../lib/cucumber/ast/scenario.rb:32:in `accept'
[java] /home/jacob/cucumber/bin/../lib/cucumber/ast/visitor.rb:42:in `visit_feature_element'
[java] /home/jacob/cucumber/bin/../lib/cucumber/formatter/pretty.rb:82:in `visit_feature_element'
[java] /home/jacob/cucumber/bin/../lib/cucumber/ast/feature.rb:25:in `accept'
[java] /home/jacob/cucumber/bin/../lib/cucumber/ast/feature.rb:24:in `each'
[java] /home/jacob/cucumber/bin/../lib/cucumber/ast/feature.rb:24:in `accept'
[java] /home/jacob/cucumber/bin/../lib/cucumber/ast/visitor.rb:20:in `visit_feature'
[java] /home/jacob/cucumber/bin/../lib/cucumber/formatter/pretty.rb:44:in `visit_feature'
[java] /home/jacob/cucumber/bin/../lib/cucumber/ast/features.rb:29:in `accept'
[java] /home/jacob/cucumber/bin/../lib/cucumber/ast/features.rb:17:in `each'
[java] /home/jacob/cucumber/bin/../lib/cucumber/ast/features.rb:17:in `each'
[java] /home/jacob/cucumber/bin/../lib/cucumber/ast/features.rb:28:in `accept'
[java] /home/jacob/cucumber/bin/../lib/cucumber/ast/visitor.rb:16:in `visit_features'
[java] /home/jacob/cucumber/bin/../lib/cucumber/formatter/pretty.rb:28:in `visit_features'
[java] /home/jacob/cucumber/bin/../lib/cucumber/broadcaster.rb:9:in `method_missing'
[java] /home/jacob/cucumber/bin/../lib/cucumber/broadcaster.rb:8:in `map'
[java] /home/jacob/cucumber/bin/../lib/cucumber/broadcaster.rb:8:in `method_missing'
[java] /home/jacob/cucumber/bin/../lib/cucumber/cli/main.rb:64:in `execute!'
[java] /home/jacob/cucumber/bin/../lib/cucumber/cli/main.rb:29:in `execute'
[java] /home/jacob/cucumber/bin/cucumber:9
BUILD FAILED
/home/jacob/stuff/cucumber/cuke4duke/groovy/build.xml:16: Java returned: 1
Total time: 9 seconds
jacob@t500-7200:~/stuff/cucumber/cuke4duke/groovy$ cat /home/jacob/cucumber/lib/cucumber/language_support/step_definition_methods.rb
require 'cucumber/core_ext/string'
module Cucumber
module LanguageSupport
module StepDefinitionMethods
def step_match(name_to_match, name_to_report)
if(match = regexp.match(name_to_match))
StepMatch.new(self, name_to_match, name_to_report, match.captures)
else
nil
end
end
# Formats the matched arguments of the associated Step. This method
# is usually called from visitors, which render output.
#
# The +format+ can either be a String or a Proc.
#
# If it is a String it should be a format string according to
# <tt>Kernel#sprinf</tt>, for example:
#
# '<span class="param">%s</span></tt>'
#
# If it is a Proc, it should take one argument and return the formatted
# argument, for example:
#
# lambda { |param| "[#{param}]" }
#
def format_args(step_name, format)
step_name.gzub(regexp, format)
end
def same_regexp?(regexp)
self.regexp == regexp
end
def backtrace_line
"#{file_colon_line}:in `#{regexp.inspect}'"
end
def text_length
regexp.inspect.jlength
end
end
end
end