diff options
Diffstat (limited to 'lib/gitlab/danger/roulette.rb')
-rw-r--r-- | lib/gitlab/danger/roulette.rb | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/lib/gitlab/danger/roulette.rb b/lib/gitlab/danger/roulette.rb index 062eda38ee4..25de0a87c9d 100644 --- a/lib/gitlab/danger/roulette.rb +++ b/lib/gitlab/danger/roulette.rb @@ -45,21 +45,19 @@ module Gitlab # Known issue: If someone is rejected due to OOO, and then becomes not OOO, the # selection will change on next spin def spin_for_person(people, random:) - person = nil - people = people.dup - - people.size.times do - person = people.sample(random: random) - - break person unless out_of_office?(person) + people.shuffle(random: random) + .find(&method(:valid_person?)) + end - people -= [person] - end + private - person + def valid_person?(person) + !mr_author?(person) && !out_of_office?(person) end - private + def mr_author?(person) + person.username == gitlab.mr_author + end def out_of_office?(person) username = CGI.escape(person.username) |