undefined method '[]' for nil:NilClass when running danger pr
- Dominant language
- Ruby
- Stars
- 5.7k
- Forks
- 488
- PR merge metrics
- No merged PRs in 30d
Description
# Report
## What did you do?
Run `danger local` or `danger pr` error is the same
## What did you expect to happen?
Running danger while looking through the Dangerfile and commenting on the things that are found on the PR.
## What happened instead?
```
/Users/joeykaan/.rvm/gems/ruby-2.4.0/gems/git-1.3.0/lib/git/diff.rb:151:in `block in process_full_diff': undefined method `[]' for nil:NilClass (NoMethodError)
from /Users/joeykaan/.rvm/gems/ruby-2.4.0/gems/git-1.3.0/lib/git/diff.rb:134:in `each'
from /Users/joeykaan/.rvm/gems/ruby-2.4.0/gems/git-1.3.0/lib/git/diff.rb:134:in `process_full_diff'
from /Users/joeykaan/.rvm/gems/ruby-2.4.0/gems/git-1.3.0/lib/git/diff.rb:109:in `process_full'
from /Users/joeykaan/.rvm/gems/ruby-2.4.0/gems/git-1.3.0/lib/git/diff.rb:68:in `each'
from /Users/joeykaan/.rvm/gems/ruby-2.4.0/gems/danger-5.3.4/lib/danger/danger_core/plugins/dangerfile_git_plugin.rb:59:in `select'
from /Users/joeykaan/.rvm/gems/ruby-2.4.0/gems/danger-5.3.4/lib/danger/danger_core/plugins/dangerfile_git_plugin.rb:59:in `added_files'
from /Users/joeykaan/.rvm/gems/ruby-2.4.0/gems/danger-5.3.4/lib/danger/danger_core/dangerfile.rb:132:in `block (2 levels) in method_values_for_plugin_hashes'
from /Users/joeykaan/.rvm/gems/ruby-2.4.0/gems/danger-5.3.4/lib/danger/danger_core/dangerfile.rb:120:in `map'
from /Users/joeykaan/.rvm/gems/ruby-2.4.0/gems/danger-5.3.4/lib/danger/danger_core/dangerfile.rb:120:in `block in method_values_for_plugin_hashes'
from /Users/joeykaan/.rvm/gems/ruby-2.4.0/gems/danger-5.3.4/lib/danger/danger_core/dangerfile.rb:116:in `each'
from /Users/joeykaan/.rvm/gems/ruby-2.4.0/gems/danger-5.3.4/lib/danger/danger_core/dangerfile.rb:116:in `flat_map'
from /Users/joeykaan/.rvm/gems/ruby-2.4.0/gems/danger-5.3.4/lib/danger/danger_core/dangerfile.rb:116:in `method_values_for_plugin_hashes'
from /Users/joeykaan/.rvm/gems/ruby-2.4.0/gems/danger-5.3.4/lib/danger/danger_core/dangerfile.rb:149:in `print_known_info'
from /Users/joeykaan/.rvm/gems/ruby-2.4.0/gems/danger-5.3.4/lib/danger/danger_core/dangerfile.rb:173:in `parse'
from /Users/joeykaan/.rvm/gems/ruby-2.4.0/gems/danger-5.3.4/lib/danger/danger_core/dangerfile.rb:272:in `run'
from /Users/joeykaan/.rvm/gems/ruby-2.4.0/gems/danger-5.3.4/lib/danger/commands/local.rb:56:in `block in run'
from /Users/joeykaan/.rvm/gems/ruby-2.4.0/gems/danger-5.3.4/lib/danger/commands/local_helpers/local_setup.rb:38:in `setup'
from /Users/joeykaan/.rvm/gems/ruby-2.4.0/gems/danger-5.3.4/lib/danger/commands/local.rb:55:in `run'
from /Users/joeykaan/.rvm/gems/ruby-2.4.0/gems/claide-1.0.1/lib/claide/command.rb:334:in `run'
from /Users/joeykaan/.rvm/gems/ruby-2.4.0/gems/danger-5.3.4/bin/danger:5:in `'
from /Users/joeykaan/.rvm/gems/ruby-2.4.0/bin/danger:23:in `load'
from /Users/joeykaan/.rvm/gems/ruby-2.4.0/bin/danger:23:in `'
from /Users/joeykaan/.rvm/gems/ruby-2.4.0/bin/ruby_executable_hooks:15:in `eval'
from /Users/joeykaan/.rvm/gems/ruby-2.4.0/bin/ruby_executable_hooks:15:in `'
```
## Your Environment
* Which CI are you running on? None
* Are you running the latest version of Danger? Version 5.3.4, at this moment, yes latest version.
* What is your Dangerfile?
```ruby
# Sometimes it's a README fix, or something like that - which isn't relevant for
# including in a project's CHANGELOG for example
declared_trivial = github.pr_title.include? "#trivial"
# Make it more obvious that a PR is a work in progress and shouldn't be merged yet
warn("PR is classed as Work in Progress") if github.pr_title.include? "[WIP]"
# Warn when there is a big PR
warn("Big PR") if git.lines_of_code > 500
# Don't let testing shortcuts get into master by accident
fail("fdescribe left in tests") if `grep -r fdescribe specs/ `.length > 1
fail("fit left in tests") if `grep -r fit specs/ `.length > 1
```
I am more than willing to look into this on my own a bit more, but at the moment I'm stuck and I could use some pointers :)!
Contributor guide
No contributing guide indexed for this repository
Research direction
Reproduce the failure with `danger local` or `danger pr` using the supplied Dangerfile. Start at `dangerfile_git_plugin.rb:59` and the reported `git/diff.rb:151` stack frame, then compare the diff data involved in `added_files`; done means the command runs without the NoMethodError and still reports the Dangerfile findings.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- git, ruby
- Domain
- cli, developer-experience, tooling
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100