r-cochran / cuke_sniffer

A ruby library used to root out smells in your cukes.
MIT License
44 stars 28 forks source link

Cuke sniffer crashing for nil error in scenario.rb file #113

Open pligor opened 5 years ago

pligor commented 5 years ago

First time user of cuke sniffer. Receiving this error message:

Features:
.................../home/gpligoro/.rvm/gems/ruby-2.3.7@myenv/gems/cuke_sniffer-1.1.0/lib/cuke_sniffer/scenario.rb:151:in `block in split_examples': undefined method `include?' for nil:NilClass (NoMethodError)
    from /home/gpligoro/.rvm/gems/ruby-2.3.7@myenv/gems/cuke_sniffer-1.1.0/lib/cuke_sniffer/scenario.rb:150:in `each'
    from /home/gpligoro/.rvm/gems/ruby-2.3.7@myenv/gems/cuke_sniffer-1.1.0/lib/cuke_sniffer/scenario.rb:150:in `split_examples'
    from /home/gpligoro/.rvm/gems/ruby-2.3.7@myenv/gems/cuke_sniffer-1.1.0/lib/cuke_sniffer/scenario.rb:90:in `split_scenario'
    from /home/gpligoro/.rvm/gems/ruby-2.3.7@myenv/gems/cuke_sniffer-1.1.0/lib/cuke_sniffer/scenario.rb:43:in `initialize'
    from /home/gpligoro/.rvm/gems/ruby-2.3.7@myenv/gems/cuke_sniffer-1.1.0/lib/cuke_sniffer/feature.rb:101:in `new'
    from /home/gpligoro/.rvm/gems/ruby-2.3.7@myenv/gems/cuke_sniffer-1.1.0/lib/cuke_sniffer/feature.rb:101:in `add_scenario_to_feature'
    from /home/gpligoro/.rvm/gems/ruby-2.3.7@myenv/gems/cuke_sniffer-1.1.0/lib/cuke_sniffer/feature.rb:84:in `split_feature'
    from /home/gpligoro/.rvm/gems/ruby-2.3.7@myenv/gems/cuke_sniffer-1.1.0/lib/cuke_sniffer/feature.rb:42:in `initialize'
    from /home/gpligoro/.rvm/gems/ruby-2.3.7@myenv/gems/cuke_sniffer-1.1.0/lib/cuke_sniffer/cli.rb:226:in `new'
    from /home/gpligoro/.rvm/gems/ruby-2.3.7@myenv/gems/cuke_sniffer-1.1.0/lib/cuke_sniffer/cli.rb:226:in `block in initialize_feature_objects'
    from /home/gpligoro/.rvm/gems/ruby-2.3.7@myenv/gems/cuke_sniffer-1.1.0/lib/cuke_sniffer/cli.rb:284:in `block in build_objects_for_extension_from_location'
    from /home/gpligoro/.rvm/gems/ruby-2.3.7@myenv/gems/cuke_sniffer-1.1.0/lib/cuke_sniffer/cli.rb:282:in `each'
    from /home/gpligoro/.rvm/gems/ruby-2.3.7@myenv/gems/cuke_sniffer-1.1.0/lib/cuke_sniffer/cli.rb:282:in `build_objects_for_extension_from_location'
    from /home/gpligoro/.rvm/gems/ruby-2.3.7@myenv/gems/cuke_sniffer-1.1.0/lib/cuke_sniffer/cli.rb:226:in `initialize_feature_objects'
    from /home/gpligoro/.rvm/gems/ruby-2.3.7@myenv/gems/cuke_sniffer-1.1.0/lib/cuke_sniffer/cli.rb:205:in `initialize_rule_targets'
    from /home/gpligoro/.rvm/gems/ruby-2.3.7@myenv/gems/cuke_sniffer-1.1.0/lib/cuke_sniffer/cli.rb:101:in `initialize'
    from /home/gpligoro/.rvm/gems/ruby-2.3.7@myenv/gems/cuke_sniffer-1.1.0/bin/cuke_sniffer:89:in `new'
    from /home/gpligoro/.rvm/gems/ruby-2.3.7@myenv/gems/cuke_sniffer-1.1.0/bin/cuke_sniffer:89:in `<top (required)>'
    from /home/gpligoro/.rvm/gems/ruby-2.3.7@myenv/bin/cuke_sniffer:23:in `load'
    from /home/gpligoro/.rvm/gems/ruby-2.3.7@myenv/bin/cuke_sniffer:23:in `<main>'
    from /home/gpligoro/.rvm/gems/ruby-2.3.7@myenv/bin/ruby_executable_hooks:24:in `eval'
    from /home/gpligoro/.rvm/gems/ruby-2.3.7@myenv/bin/ruby_executable_hooks:24:in `<main>'

Note that this is crashing in a complex project that has multiple folders with feature files and multiple step_definitions folders underneath (yes there is a whole structure of subfolders due to the size of the project)

Note that If cuke sniffer is running against a simple project it is executing ok

pligor commented 5 years ago

Hello! Note that a pull request has been created regarding the above issue and the proposed fix: https://github.com/r-cochran/cuke_sniffer/pull/114

enkessler commented 5 years ago

@pligor Parsing feature files is a long-standing problem with this particular gem and it hasn't gotten updates in a long time. If you would be interested in a current and maintained .feature file linter, check out cuke_linter. It's still new (so it doesn't have as many rules that get checked or reporting formats) but it is a currently alive project and, if you are in the mood to contribute, is pretty easy to add new linters to.

Incidentally, my presence can sometimes stir the owner of cuke_sniffer into action. So either way I'm helping. ;)