auxesis / cucumber-nagios

Systems testing plugin for Nagios with Cucumber + Webrat + Mechanize + Net::SSH
http://cucumber-nagios.org/
MIT License
257 stars 43 forks source link

Error while executing features. #86

Closed varunwy closed 11 years ago

varunwy commented 12 years ago

I executed the below steps:

  1. gem install cucumber-nagios
  2. cucumber-nagios-gen mytest
  3. cd mytest
  4. bundle install
  5. cucumber-nagios-gen feature google.com home

The file 'features/google.com/home.feature' contains:

feature: google.co.in It should be up

Scenario: Visiting home page When I go to "http://www.google.co.in" Then the request should succeed

  1. Now when I execute

"cucumber-nagios features/google.com/home.feature"

it prints the following error:

wrong number of arguments (8 for 7) (ArgumentError)

/usr/lib/ruby/gems/1.8/gems/cucumber-1.2.1/bin/../lib/cucumber/ast/tree_walker.rb:173:in after_step_result' /usr/lib/ruby/gems/1.8/gems/cucumber-1.2.1/bin/../lib/cucumber/ast/tree_walker.rb:173:insend' /usr/lib/ruby/gems/1.8/gems/cucumber-1.2.1/bin/../lib/cucumber/ast/tree_walker.rb:173:in send_to_all' /usr/lib/ruby/gems/1.8/gems/cucumber-1.2.1/bin/../lib/cucumber/ast/tree_walker.rb:171:ineach' /usr/lib/ruby/gems/1.8/gems/cucumber-1.2.1/bin/../lib/cucumber/ast/tree_walker.rb:171:in send_to_all' /usr/lib/ruby/gems/1.8/gems/cucumber-1.2.1/bin/../lib/cucumber/ast/tree_walker.rb:164:inbroadcast' /usr/lib/ruby/gems/1.8/gems/cucumber-1.2.1/bin/../lib/cucumber/ast/tree_walker.rb:104:in visit_step_result' /usr/lib/ruby/gems/1.8/gems/cucumber-1.2.1/bin/../lib/cucumber/ast/step_invocation.rb:43:invisit_step_result' /usr/lib/ruby/gems/1.8/gems/cucumber-1.2.1/bin/../lib/cucumber/ast/step_invocation.rb:39:in accept' /usr/lib/ruby/gems/1.8/gems/cucumber-1.2.1/bin/../lib/cucumber/ast/tree_walker.rb:99:invisit_step' /usr/lib/ruby/gems/1.8/gems/cucumber-1.2.1/bin/../lib/cucumber/ast/tree_walker.rb:163:in broadcast' /usr/lib/ruby/gems/1.8/gems/cucumber-1.2.1/bin/../lib/cucumber/ast/tree_walker.rb:98:invisit_step' /usr/lib/ruby/gems/1.8/gems/cucumber-1.2.1/bin/../lib/cucumber/ast/step_collection.rb:15:in accept' /usr/lib/ruby/gems/1.8/gems/cucumber-1.2.1/bin/../lib/cucumber/ast/step_collection.rb:14:ineach' /usr/lib/ruby/gems/1.8/gems/cucumber-1.2.1/bin/../lib/cucumber/ast/step_collection.rb:14:in accept' /usr/lib/ruby/gems/1.8/gems/cucumber-1.2.1/bin/../lib/cucumber/ast/tree_walker.rb:93:invisit_steps' /usr/lib/ruby/gems/1.8/gems/cucumber-1.2.1/bin/../lib/cucumber/ast/tree_walker.rb:163:in broadcast' /usr/lib/ruby/gems/1.8/gems/cucumber-1.2.1/bin/../lib/cucumber/ast/tree_walker.rb:92:invisit_steps' /usr/lib/ruby/gems/1.8/gems/cucumber-1.2.1/bin/../lib/cucumber/ast/scenario.rb:55:in accept' /usr/lib/ruby/gems/1.8/gems/cucumber-1.2.1/bin/../lib/cucumber/runtime.rb:80:inwith_hooks' /usr/lib/ruby/gems/1.8/gems/cucumber-1.2.1/bin/../lib/cucumber/runtime.rb:96:in before_and_after' /usr/lib/ruby/gems/1.8/gems/cucumber-1.2.1/bin/../lib/cucumber/runtime.rb:79:inwith_hooks' /usr/lib/ruby/gems/1.8/gems/cucumber-1.2.1/bin/../lib/cucumber/runtime/support_code.rb:120:in call' /usr/lib/ruby/gems/1.8/gems/cucumber-1.2.1/bin/../lib/cucumber/runtime/support_code.rb:120:inaround' /usr/lib/ruby/gems/1.8/gems/cucumber-1.2.1/bin/../lib/cucumber/language_support/language_methods.rb:9:in around' /usr/lib/ruby/gems/1.8/gems/cucumber-1.2.1/bin/../lib/cucumber/language_support/language_methods.rb:91:incall' /usr/lib/ruby/gems/1.8/gems/cucumber-1.2.1/bin/../lib/cucumber/language_support/language_methods.rb:91:in execute_around' /usr/lib/ruby/gems/1.8/gems/cucumber-1.2.1/bin/../lib/cucumber/language_support/language_methods.rb:8:inaround' /usr/lib/ruby/gems/1.8/gems/cucumber-1.2.1/bin/../lib/cucumber/runtime/support_code.rb:119:in around' /usr/lib/ruby/gems/1.8/gems/cucumber-1.2.1/bin/../lib/cucumber/runtime/support_code.rb:117:incall' /usr/lib/ruby/gems/1.8/gems/cucumber-1.2.1/bin/../lib/cucumber/runtime/support_code.rb:117:in around' /usr/lib/ruby/gems/1.8/gems/cucumber-1.2.1/bin/../lib/cucumber/runtime.rb:91:inaround' /usr/lib/ruby/gems/1.8/gems/cucumber-1.2.1/bin/../lib/cucumber/runtime.rb:78:in with_hooks' /usr/lib/ruby/gems/1.8/gems/cucumber-1.2.1/bin/../lib/cucumber/ast/scenario.rb:53:inaccept' /usr/lib/ruby/gems/1.8/gems/cucumber-1.2.1/bin/../lib/cucumber/ast/scenario.rb:108:in with_visitor' /usr/lib/ruby/gems/1.8/gems/cucumber-1.2.1/bin/../lib/cucumber/ast/scenario.rb:47:inaccept' /usr/lib/ruby/gems/1.8/gems/cucumber-1.2.1/bin/../lib/cucumber/ast/tree_walker.rb:51:in visit_feature_element' /usr/lib/ruby/gems/1.8/gems/cucumber-1.2.1/bin/../lib/cucumber/ast/tree_walker.rb:163:inbroadcast' /usr/lib/ruby/gems/1.8/gems/cucumber-1.2.1/bin/../lib/cucumber/ast/tree_walker.rb:50:in visit_feature_element' /usr/lib/ruby/gems/1.8/gems/cucumber-1.2.1/bin/../lib/cucumber/ast/feature.rb:43:inaccept' /usr/lib/ruby/gems/1.8/gems/cucumber-1.2.1/bin/../lib/cucumber/ast/feature.rb:42:in each' /usr/lib/ruby/gems/1.8/gems/cucumber-1.2.1/bin/../lib/cucumber/ast/feature.rb:42:inaccept' /usr/lib/ruby/gems/1.8/gems/cucumber-1.2.1/bin/../lib/cucumber/ast/tree_walker.rb:20:in visit_feature' /usr/lib/ruby/gems/1.8/gems/cucumber-1.2.1/bin/../lib/cucumber/ast/tree_walker.rb:163:inbroadcast' /usr/lib/ruby/gems/1.8/gems/cucumber-1.2.1/bin/../lib/cucumber/ast/tree_walker.rb:19:in visit_feature' /usr/lib/ruby/gems/1.8/gems/cucumber-1.2.1/bin/../lib/cucumber/ast/features.rb:29:inaccept' /usr/lib/ruby/gems/1.8/gems/cucumber-1.2.1/bin/../lib/cucumber/ast/features.rb:17:in each' /usr/lib/ruby/gems/1.8/gems/cucumber-1.2.1/bin/../lib/cucumber/ast/features.rb:17:ineach' /usr/lib/ruby/gems/1.8/gems/cucumber-1.2.1/bin/../lib/cucumber/ast/features.rb:28:in accept' /usr/lib/ruby/gems/1.8/gems/cucumber-1.2.1/bin/../lib/cucumber/ast/tree_walker.rb:14:invisit_features' /usr/lib/ruby/gems/1.8/gems/cucumber-1.2.1/bin/../lib/cucumber/ast/tree_walker.rb:163:in broadcast' /usr/lib/ruby/gems/1.8/gems/cucumber-1.2.1/bin/../lib/cucumber/ast/tree_walker.rb:13:invisit_features' /usr/lib/ruby/gems/1.8/gems/cucumber-1.2.1/bin/../lib/cucumber/runtime.rb:46:in run!' /usr/lib/ruby/gems/1.8/gems/cucumber-1.2.1/bin/../lib/cucumber/cli/main.rb:43:inexecute!' /usr/lib/ruby/gems/1.8/gems/cucumber-1.2.1/bin/../lib/cucumber/cli/main.rb:20:in execute' /usr/lib/ruby/gems/1.8/gems/cucumber-1.2.1/bin/cucumber:14 /usr/bin/cucumber:23:inload' /usr/bin/cucumber:23

What can I do to make it work? Is the project in a stable state and well tested?

varunwy commented 12 years ago

I debugged this further and located the problem: Method: visit_step_result in /usr/lib/ruby/gems/1.8/gems/cucumber-1.2.1/bin/../lib/cucumber/ast/tree_walker.rb calls 'broadcast' with 8 arguments broadcast(keyword, step_match, multiline_arg, status, exception, source_indent, background, file_colon_line) which in turn calls Method: after_step_result in file: /usr/lib/ruby/gems/1.8/gems/cucumber-nagios-0.9.2/lib/cucumber/formatter/nagios.rb. The method after_step_result is defined with 7 arguments only.

def after_step_result(keyword, step_match, multiline_arg, status, exception, source_indent, background) record_result(status, :step_match => step_match, :keyword => keyword) end

I fave fixed this by adding an option argument to method after_step_result: def after_step_result(keyword, step_match, multiline_arg, status, exception, source_indent, background, *tmp) record_result(status, :step_match => step_match, :keyword => keyword) end

I have no experience programming with Ruby and hence not sure if this is the correct way to fix, though it works for me now.

bappelt commented 12 years ago

I am experiencing this as well.

bappelt commented 12 years ago

The problem seems to be that an additional argument was added to visit_step_result method in This Commit

Since the cucumber-nagios gemspec file uses the open ended ">= 0.10.0" for it's cucumber dependency, the latest will get installed.

I just manually installed cucumber 1.1.2 and that seems to work.

BenoitPoulet commented 11 years ago

Thank you varunwy !!!

I got the same problem after a «gem update» and you quick fix do the trick.

It seems the cucumber-nagios gem is a dead project :/, 3 months after you post the fix, the bug is stil here.

hedgehog commented 11 years ago

Can anyone confirm the suggestion of @bappelt:

BenoitPoulet commented 11 years ago

I'm sorry i'm a newbie in the rubby world. 1) Did you suggests to downgrade Cucumber ? Not really a good way to solve the pb in my point of view. 2) «Make a pull request?» sorry , i don't understand :(

hedgehog commented 11 years ago

Yes I think @bappelt suggested 1.1.2 as the version so try using a Gem dep version of ~>1.1.2

BenoitPoulet commented 11 years ago

I removed «cucumber-1.2.1» and «gherkin-2.11.2» (dependency). so that is installed (gem list) : cucumber (1.1.9, 1.1.3) cucumber-nagios (0.9.2)

I removed the hack of Varunwy and it works : CUCUMBER OK - Critical: 0, Warning: 0, 8 okay | passed=8; failed=0; nosteps=0; total=8; time=12

injcristianrojas commented 11 years ago

Indeed it seems to be dead, @benoiteolas .

bendilley commented 11 years ago

Please see pull request #88 as a potential solution. @hedgehog would you be interested in this? It is along the lines of @bappelt's suggestion and works for me.

hedgehog commented 11 years ago

Closed by #88

bendilley commented 11 years ago

Thanks @hedgehog!