def _assign_bug_to_last_patch_attacher(self, bug_id): committers = CommitterList() bug = self._tool.bugs.fetch_bug(bug_id) if not bug.is_unassigned(): assigned_to_email = bug.assigned_to_email() _log.info(u"Bug %s is already assigned to %s (%s)." % (bug_id, assigned_to_email, committers.committer_by_email(assigned_to_email))) return reviewed_patches = bug.reviewed_patches() if not reviewed_patches: _log.info("Bug %s has no non-obsolete patches, ignoring." % bug_id) return # We only need to do anything with this bug if one of the r+'d patches does not have a valid committer (cq+ set). if self._patches_have_commiters(reviewed_patches): _log.info( "All reviewed patches on bug %s already have commit-queue+, ignoring." % bug_id) return latest_patch = reviewed_patches[-1] attacher_email = latest_patch.attacher_email() committer = committers.committer_by_email(attacher_email) if not committer: _log.info( "Attacher %s is not a committer. Bug %s likely needs commit-queue+." % (attacher_email, bug_id)) return reassign_message = u"Attachment %s was posted by a committer and has review+, assigning to %s for commit." % ( latest_patch.id(), committer.full_name) self._tool.bugs.reassign_bug(bug_id, committer.bugzilla_email(), reassign_message)
def test_committer_lookup(self): committer = Committer('Test One', '*****@*****.**', 'one') reviewer = Reviewer('Test Two', ['*****@*****.**', '*****@*****.**', '*****@*****.**']) committer_list = CommitterList(committers=[committer], reviewers=[reviewer]) # Test valid committer and reviewer lookup self.assertEqual(committer_list.committer_by_email('*****@*****.**'), committer) self.assertEqual(committer_list.reviewer_by_email('*****@*****.**'), reviewer) self.assertEqual(committer_list.committer_by_email('*****@*****.**'), reviewer) self.assertEqual(committer_list.committer_by_email('*****@*****.**'), reviewer) self.assertEqual(committer_list.reviewer_by_email('*****@*****.**'), reviewer) # Test valid committer and reviewer lookup self.assertEqual(committer_list.committer_by_name("Test One"), committer) self.assertEqual(committer_list.committer_by_name("Test Two"), reviewer) self.assertEqual(committer_list.committer_by_name("Test Three"), None) # Test that the first email is assumed to be the Bugzilla email address (for now) self.assertEqual(committer_list.committer_by_email('*****@*****.**').bugzilla_email(), '*****@*****.**') # Test that a known committer is not returned during reviewer lookup self.assertEqual(committer_list.reviewer_by_email('*****@*****.**'), None) # Test that unknown email address fail both committer and reviewer lookup self.assertEqual(committer_list.committer_by_email('*****@*****.**'), None) self.assertEqual(committer_list.reviewer_by_email('*****@*****.**'), None) # Test that emails returns a list. self.assertEqual(committer.emails, ['*****@*****.**']) self.assertEqual(committer.irc_nickname, 'one') # Test that committers returns committers and reviewers and reviewers() just reviewers. self.assertEqual(committer_list.committers(), [committer, reviewer]) self.assertEqual(committer_list.reviewers(), [reviewer])
def _assign_bug_to_last_patch_attacher(self, bug_id): committers = CommitterList() bug = self._tool.bugs.fetch_bug(bug_id) if not bug.is_unassigned(): assigned_to_email = bug.assigned_to_email() log( "Bug %s is already assigned to %s (%s)." % (bug_id, assigned_to_email, committers.committer_by_email(assigned_to_email)) ) return reviewed_patches = bug.reviewed_patches() if not reviewed_patches: log("Bug %s has no non-obsolete patches, ignoring." % bug_id) return # We only need to do anything with this bug if one of the r+'d patches does not have a valid committer (cq+ set). if self._patches_have_commiters(reviewed_patches): log("All reviewed patches on bug %s already have commit-queue+, ignoring." % bug_id) return latest_patch = reviewed_patches[-1] attacher_email = latest_patch.attacher_email() committer = committers.committer_by_email(attacher_email) if not committer: log("Attacher %s is not a committer. Bug %s likely needs commit-queue+." % (attacher_email, bug_id)) return reassign_message = "Attachment %s was posted by a committer and has review+, assigning to %s for commit." % ( latest_patch.id(), committer.full_name, ) self._tool.bugs.reassign_bug(bug_id, committer.bugzilla_email(), reassign_message)
def test_committer_lookup(self): committer = Committer('Test One', '*****@*****.**', 'one') reviewer = Reviewer( 'Test Two', ['*****@*****.**', '*****@*****.**', '*****@*****.**']) committer_list = CommitterList(committers=[committer], reviewers=[reviewer]) # Test valid committer and reviewer lookup self.assertEqual(committer_list.committer_by_email('*****@*****.**'), committer) self.assertEqual(committer_list.reviewer_by_email('*****@*****.**'), reviewer) self.assertEqual(committer_list.committer_by_email('*****@*****.**'), reviewer) self.assertEqual(committer_list.committer_by_email('*****@*****.**'), reviewer) self.assertEqual(committer_list.reviewer_by_email('*****@*****.**'), reviewer) # Test valid committer and reviewer lookup self.assertEqual(committer_list.committer_by_name("Test One"), committer) self.assertEqual(committer_list.committer_by_name("Test Two"), reviewer) self.assertEqual(committer_list.committer_by_name("Test Three"), None) # Test that the first email is assumed to be the Bugzilla email address (for now) self.assertEqual( committer_list.committer_by_email('*****@*****.**').bugzilla_email(), '*****@*****.**') # Test that a known committer is not returned during reviewer lookup self.assertEqual(committer_list.reviewer_by_email('*****@*****.**'), None) # Test that unknown email address fail both committer and reviewer lookup self.assertEqual(committer_list.committer_by_email('*****@*****.**'), None) self.assertEqual(committer_list.reviewer_by_email('*****@*****.**'), None) # Test that emails returns a list. self.assertEqual(committer.emails, ['*****@*****.**']) self.assertEqual(committer.irc_nickname, 'one') # Test that committers returns committers and reviewers and reviewers() just reviewers. self.assertEqual(committer_list.committers(), [committer, reviewer]) self.assertEqual(committer_list.reviewers(), [reviewer])
def test_committer_lookup(self): committer = Committer('Test One', '*****@*****.**', 'one') reviewer = Reviewer('Test Two', ['*****@*****.**', '*****@*****.**', '*****@*****.**']) contributor = Contributor('Test Three', ['*****@*****.**'], 'three') contributor_with_two_nicknames = Contributor('Other Four', ['*****@*****.**'], ['four', 'otherfour']) committer_list = CommitterList(committers=[committer], reviewers=[reviewer], contributors=[contributor, contributor_with_two_nicknames]) # Test valid committer, reviewer and contributor lookup self.assertEqual(committer_list.committer_by_email('*****@*****.**'), committer) self.assertEqual(committer_list.reviewer_by_email('*****@*****.**'), reviewer) self.assertEqual(committer_list.committer_by_email('*****@*****.**'), reviewer) self.assertEqual(committer_list.committer_by_email('*****@*****.**'), reviewer) self.assertEqual(committer_list.reviewer_by_email('*****@*****.**'), reviewer) self.assertEqual(committer_list.contributor_by_email('*****@*****.**'), contributor) # Test valid committer, reviewer and contributor lookup self.assertEqual(committer_list.committer_by_name("Test One"), committer) self.assertEqual(committer_list.committer_by_name("Test Two"), reviewer) self.assertEqual(committer_list.committer_by_name("Test Three"), None) self.assertEqual(committer_list.contributor_by_name("Test Three"), contributor) # Test that the first email is assumed to be the Bugzilla email address (for now) self.assertEqual(committer_list.committer_by_email('*****@*****.**').bugzilla_email(), '*****@*****.**') # Test that a known committer is not returned during reviewer lookup self.assertEqual(committer_list.reviewer_by_email('*****@*****.**'), None) self.assertEqual(committer_list.reviewer_by_email('*****@*****.**'), None) # and likewise that a known contributor is not returned for committer lookup. self.assertEqual(committer_list.committer_by_email('*****@*****.**'), None) # Test that unknown email address fail both committer and reviewer lookup self.assertEqual(committer_list.committer_by_email('*****@*****.**'), None) self.assertEqual(committer_list.reviewer_by_email('*****@*****.**'), None) # Test that emails returns a list. self.assertEqual(committer.emails, ['*****@*****.**']) self.assertEqual(committer.irc_nicknames, ['one']) self.assertEqual(committer_list.contributor_by_irc_nickname('one'), committer) self.assertEqual(committer_list.contributor_by_irc_nickname('three'), contributor) self.assertEqual(committer_list.contributor_by_irc_nickname('four'), contributor_with_two_nicknames) self.assertEqual(committer_list.contributor_by_irc_nickname('otherfour'), contributor_with_two_nicknames) # Test that the lists returned are are we expect them. self.assertEqual(committer_list.contributors(), [contributor, contributor_with_two_nicknames, committer, reviewer]) self.assertEqual(committer_list.committers(), [committer, reviewer]) self.assertEqual(committer_list.reviewers(), [reviewer]) self.assertEqual(committer_list.contributors_by_search_string('test'), [contributor, committer, reviewer]) self.assertEqual(committer_list.contributors_by_search_string('rad'), [reviewer]) self.assertEqual(committer_list.contributors_by_search_string('Two'), [reviewer])
def test_committer_lookup(self): committer = Committer('Test One', '*****@*****.**', 'one') reviewer = Reviewer( 'Test Two', ['*****@*****.**', '*****@*****.**', '*****@*****.**']) contributor = Contributor('Test Three', ['*****@*****.**'], 'three') contributor_with_two_nicknames = Contributor('Other Four', ['*****@*****.**'], ['four', 'otherfour']) committer_list = CommitterList( committers=[committer], reviewers=[reviewer], contributors=[contributor, contributor_with_two_nicknames]) # Test valid committer, reviewer and contributor lookup self.assertEqual(committer_list.committer_by_email('*****@*****.**'), committer) self.assertEqual(committer_list.reviewer_by_email('*****@*****.**'), reviewer) self.assertEqual(committer_list.committer_by_email('*****@*****.**'), reviewer) self.assertEqual(committer_list.committer_by_email('*****@*****.**'), reviewer) self.assertEqual(committer_list.reviewer_by_email('*****@*****.**'), reviewer) self.assertEqual(committer_list.contributor_by_email('*****@*****.**'), contributor) # Test valid committer, reviewer and contributor lookup self.assertEqual(committer_list.committer_by_name("Test One"), committer) self.assertEqual(committer_list.committer_by_name("Test Two"), reviewer) self.assertEqual(committer_list.committer_by_name("Test Three"), None) self.assertEqual(committer_list.contributor_by_name("Test Three"), contributor) # Test that the first email is assumed to be the Bugzilla email address (for now) self.assertEqual( committer_list.committer_by_email('*****@*****.**').bugzilla_email(), '*****@*****.**') # Test that a known committer is not returned during reviewer lookup self.assertEqual(committer_list.reviewer_by_email('*****@*****.**'), None) self.assertEqual(committer_list.reviewer_by_email('*****@*****.**'), None) # and likewise that a known contributor is not returned for committer lookup. self.assertEqual(committer_list.committer_by_email('*****@*****.**'), None) # Test that unknown email address fail both committer and reviewer lookup self.assertEqual(committer_list.committer_by_email('*****@*****.**'), None) self.assertEqual(committer_list.reviewer_by_email('*****@*****.**'), None) # Test that emails returns a list. self.assertEqual(committer.emails, ['*****@*****.**']) self.assertEqual(committer.irc_nicknames, ['one']) self.assertEqual(committer_list.contributor_by_irc_nickname('one'), committer) self.assertEqual(committer_list.contributor_by_irc_nickname('three'), contributor) self.assertEqual(committer_list.contributor_by_irc_nickname('four'), contributor_with_two_nicknames) self.assertEqual( committer_list.contributor_by_irc_nickname('otherfour'), contributor_with_two_nicknames) # Test that the lists returned are are we expect them. self.assertEqual( committer_list.contributors(), [contributor, contributor_with_two_nicknames, committer, reviewer]) self.assertEqual(committer_list.committers(), [committer, reviewer]) self.assertEqual(committer_list.reviewers(), [reviewer]) self.assertEqual(committer_list.contributors_by_search_string('test'), [contributor, committer, reviewer]) self.assertEqual(committer_list.contributors_by_search_string('rad'), [reviewer]) self.assertEqual(committer_list.contributors_by_search_string('Two'), [reviewer])
def test_committer_lookup(self): account = Account("Test Zero", ["*****@*****.**", "*****@*****.**"], "zero") committer = Committer("Test One", "*****@*****.**", "one") reviewer = Reviewer("Test Two", ["*****@*****.**", "*****@*****.**", "*****@*****.**"]) contributor = Contributor("Test Three", ["*****@*****.**"], "three") contributor_with_two_nicknames = Contributor( "Other Four", ["*****@*****.**", "*****@*****.**"], ["four", "otherfour"] ) contributor_with_same_email_username = Contributor( "Yet Another Four", ["*****@*****.**"], ["yetanotherfour"] ) committer_list = CommitterList( watchers=[account], committers=[committer], reviewers=[reviewer], contributors=[contributor, contributor_with_two_nicknames, contributor_with_same_email_username], ) # Test valid committer, reviewer and contributor lookup self.assertEqual(committer_list.account_by_email("*****@*****.**"), account) self.assertEqual(committer_list.committer_by_email("*****@*****.**"), committer) self.assertEqual(committer_list.reviewer_by_email("*****@*****.**"), reviewer) self.assertEqual(committer_list.committer_by_email("*****@*****.**"), reviewer) self.assertEqual(committer_list.committer_by_email("*****@*****.**"), reviewer) self.assertEqual(committer_list.reviewer_by_email("*****@*****.**"), reviewer) self.assertEqual(committer_list.contributor_by_email("*****@*****.**"), contributor) # Test valid committer, reviewer and contributor lookup self.assertEqual(committer_list.committer_by_name("Test One"), committer) self.assertEqual(committer_list.committer_by_name("Test Two"), reviewer) self.assertEqual(committer_list.committer_by_name("Test Three"), None) self.assertEqual(committer_list.contributor_by_name("Test Three"), contributor) self.assertEqual(committer_list.contributor_by_name("test one"), committer) self.assertEqual(committer_list.contributor_by_name("test two"), reviewer) self.assertEqual(committer_list.contributor_by_name("test three"), contributor) # Test that the first email is assumed to be the Bugzilla email address (for now) self.assertEqual(committer_list.committer_by_email("*****@*****.**").bugzilla_email(), "*****@*****.**") # Test lookup by login email address self.assertEqual(committer_list.account_by_login("*****@*****.**"), account) self.assertEqual(committer_list.account_by_login("*****@*****.**"), None) self.assertEqual(committer_list.account_by_login("*****@*****.**"), committer) self.assertEqual(committer_list.account_by_login("*****@*****.**"), reviewer) self.assertEqual(committer_list.account_by_login("*****@*****.**"), None) self.assertEqual(committer_list.account_by_login("*****@*****.**"), None) # Test that a known committer is not returned during reviewer lookup self.assertEqual(committer_list.reviewer_by_email("*****@*****.**"), None) self.assertEqual(committer_list.reviewer_by_email("*****@*****.**"), None) # and likewise that a known contributor is not returned for committer lookup. self.assertEqual(committer_list.committer_by_email("*****@*****.**"), None) # Test that unknown email address fail both committer and reviewer lookup self.assertEqual(committer_list.committer_by_email("*****@*****.**"), None) self.assertEqual(committer_list.reviewer_by_email("*****@*****.**"), None) # Test that emails returns a list. self.assertEqual(committer.emails, ["*****@*****.**"]) self.assertEqual(committer.irc_nicknames, ["one"]) self.assertEqual(committer_list.contributor_by_irc_nickname("one"), committer) self.assertEqual(committer_list.contributor_by_irc_nickname("three"), contributor) self.assertEqual(committer_list.contributor_by_irc_nickname("four"), contributor_with_two_nicknames) self.assertEqual(committer_list.contributor_by_irc_nickname("otherfour"), contributor_with_two_nicknames) # Test that the lists returned are are we expect them. self.assertEqual( committer_list.contributors(), [contributor, contributor_with_two_nicknames, contributor_with_same_email_username, committer, reviewer], ) self.assertEqual(committer_list.committers(), [committer, reviewer]) self.assertEqual(committer_list.reviewers(), [reviewer]) self.assertEqual(committer_list.contributors_by_search_string("test"), [contributor, committer, reviewer]) self.assertEqual(committer_list.contributors_by_search_string("rad"), [reviewer]) self.assertEqual(committer_list.contributors_by_search_string("Two"), [reviewer]) self.assertEqual(committer_list.contributors_by_search_string("otherfour"), [contributor_with_two_nicknames]) self.assertEqual( committer_list.contributors_by_search_string("*otherfour*"), [contributor_with_two_nicknames, contributor_with_same_email_username], ) self.assertEqual(committer_list.contributors_by_email_username("one"), [committer]) self.assertEqual(committer_list.contributors_by_email_username("four"), []) self.assertEqual( committer_list.contributors_by_email_username("otherfour"), [contributor_with_two_nicknames, contributor_with_same_email_username], )
def test_committer_lookup(self): account = Account('Test Zero', ['*****@*****.**', '*****@*****.**'], 'zero') committer = Committer('Test One', '*****@*****.**', 'one') reviewer = Reviewer('Test Two', ['*****@*****.**', '*****@*****.**', '*****@*****.**']) contributor = Contributor('Test Three', ['*****@*****.**'], 'three') contributor_with_two_nicknames = Contributor('Other Four', ['*****@*****.**', '*****@*****.**'], ['four', 'otherfour']) contributor_with_same_email_username = Contributor('Yet Another Four', ['*****@*****.**'], ['yetanotherfour']) committer_list = CommitterList(watchers=[account], committers=[committer], reviewers=[reviewer], contributors=[contributor, contributor_with_two_nicknames, contributor_with_same_email_username]) # Test valid committer, reviewer and contributor lookup self.assertEqual(committer_list.account_by_email('*****@*****.**'), account) self.assertEqual(committer_list.committer_by_email('*****@*****.**'), committer) self.assertEqual(committer_list.reviewer_by_email('*****@*****.**'), reviewer) self.assertEqual(committer_list.committer_by_email('*****@*****.**'), reviewer) self.assertEqual(committer_list.committer_by_email('*****@*****.**'), reviewer) self.assertEqual(committer_list.reviewer_by_email('*****@*****.**'), reviewer) self.assertEqual(committer_list.contributor_by_email('*****@*****.**'), contributor) # Test valid committer, reviewer and contributor lookup self.assertEqual(committer_list.committer_by_name("Test One"), committer) self.assertEqual(committer_list.committer_by_name("Test Two"), reviewer) self.assertIsNone(committer_list.committer_by_name("Test Three")) self.assertEqual(committer_list.contributor_by_name("Test Three"), contributor) self.assertEqual(committer_list.contributor_by_name("test one"), committer) self.assertEqual(committer_list.contributor_by_name("test two"), reviewer) self.assertEqual(committer_list.contributor_by_name("test three"), contributor) # Test that the first email is assumed to be the Bugzilla email address (for now) self.assertEqual(committer_list.committer_by_email('*****@*****.**').bugzilla_email(), '*****@*****.**') # Test lookup by login email address self.assertEqual(committer_list.account_by_login('*****@*****.**'), account) self.assertIsNone(committer_list.account_by_login('*****@*****.**')) self.assertEqual(committer_list.account_by_login('*****@*****.**'), committer) self.assertEqual(committer_list.account_by_login('*****@*****.**'), reviewer) self.assertIsNone(committer_list.account_by_login('*****@*****.**')) self.assertIsNone(committer_list.account_by_login('*****@*****.**')) # Test that a known committer is not returned during reviewer lookup self.assertIsNone(committer_list.reviewer_by_email('*****@*****.**')) self.assertIsNone(committer_list.reviewer_by_email('*****@*****.**')) # and likewise that a known contributor is not returned for committer lookup. self.assertIsNone(committer_list.committer_by_email('*****@*****.**')) # Test that unknown email address fail both committer and reviewer lookup self.assertIsNone(committer_list.committer_by_email('*****@*****.**')) self.assertIsNone(committer_list.reviewer_by_email('*****@*****.**')) # Test that emails returns a list. self.assertEqual(committer.emails, ['*****@*****.**']) self.assertEqual(committer.irc_nicknames, ['one']) self.assertEqual(committer_list.contributor_by_irc_nickname('one'), committer) self.assertEqual(committer_list.contributor_by_irc_nickname('three'), contributor) self.assertEqual(committer_list.contributor_by_irc_nickname('four'), contributor_with_two_nicknames) self.assertEqual(committer_list.contributor_by_irc_nickname('otherfour'), contributor_with_two_nicknames) # Test that the lists returned are are we expect them. self.assertEqual(committer_list.contributors(), [contributor, contributor_with_two_nicknames, contributor_with_same_email_username, committer, reviewer]) self.assertEqual(committer_list.committers(), [committer, reviewer]) self.assertEqual(committer_list.reviewers(), [reviewer]) self.assertEqual(committer_list.contributors_by_search_string('test'), [contributor, committer, reviewer]) self.assertEqual(committer_list.contributors_by_search_string('rad'), [reviewer]) self.assertEqual(committer_list.contributors_by_search_string('Two'), [reviewer]) self.assertEqual(committer_list.contributors_by_search_string('otherfour'), [contributor_with_two_nicknames]) self.assertEqual(committer_list.contributors_by_search_string('*otherfour*'), [contributor_with_two_nicknames, contributor_with_same_email_username]) self.assertEqual(committer_list.contributors_by_email_username("one"), [committer]) self.assertEqual(committer_list.contributors_by_email_username("four"), []) self.assertEqual(committer_list.contributors_by_email_username("otherfour"), [contributor_with_two_nicknames, contributor_with_same_email_username])