Do not alter pull_requests while iterating on it

Deleting elements of an array while iterating on it
results in never seeing the last element.

    > a = [1,2,3]
     => [1, 2, 3]
    > a.each do |e|
    >   p a
    >   a.delete(e)
    > end
    [1, 2, 3]
    [2, 3]
     => [2]
This commit is contained in:
Raphaël Pinson 2015-08-27 13:30:16 +02:00 committed by Petr Korolev
parent 0140986091
commit 1ec72afe32

View File

@ -120,22 +120,22 @@ module GitHubChangelogGenerator
issues_a.push dict unless added issues_a.push dict unless added
end end
added_pull_requests = []
pull_requests.each do |dict| pull_requests.each do |dict|
added = false
dict.labels.each do |label| dict.labels.each do |label|
if @options[:bug_labels].include? label.name if @options[:bug_labels].include? label.name
bugs_a.push dict bugs_a.push dict
added = true added_pull_requests.push dict
next next
end end
if @options[:enhancement_labels].include? label.name if @options[:enhancement_labels].include? label.name
enhancement_a.push dict enhancement_a.push dict
added = true added_pull_requests.push dict
next next
end end
end end
pull_requests.delete(dict) if added
end end
added_pull_requests.each { |p| pull_requests.delete(p) }
[bugs_a, enhancement_a, issues_a] [bugs_a, enhancement_a, issues_a]
end end