Dangerfile: Don't check old names of renamed files
Our changes_size
Dangerfile currently uses the added_files
and
modified_files
methods to get a list of all files to check. However,
modified_files
may return the old name of a renamed file. When this
occurs, the diff
property for that file may be nil
, causing the
danger job to error out with:
bundler: failed to load command: danger (/builds/gitlab-org/gitaly/_build/cache/ruby/ruby/3.0.0/bin/danger)
/builds/gitlab-org/gitaly/_build/cache/ruby/ruby/3.0.0/gems/danger-9.2.0/lib/danger/danger_core/plugins/dangerfile_git_plugin.rb:144:in `info_for_file': \e[31m (Danger::DSLError)
[!] Invalid `Dangerfile` file: \e[31m
[!] Invalid `Dangerfile` file: undefined method `[]' for nil:NilClass\e[0m
# from danger/rules/changes_size/Dangerfile:8
# -------------------------------------------
#
> info = git.info_for_file(file)
#
# -------------------------------------------
\e[0m
# from danger/rules/changes_size/Dangerfile:8
See here for full output.
A fix for this was attempted in !5279 (merged), but in this
case file
is nil
, rather than info
.
To prevent this from occurring, capture the list of renames and remove the old names from the list of files to check. A previously failing pipeline that now passes can be viewed here.