def test_rejectedCodeReview(self): # Rejecting a code review is also a significant event, and as such # gets its own karma event. proposal = self.factory.makeBranchMergeProposal() reviewer = proposal.target_branch.owner self.karma_events = [] login_person(reviewer) with BranchMergeProposalNoPreviewDiffDelta.monitor(proposal): proposal.rejectBranch(reviewer, "A rev id.") self.assertOneKarmaEvent(reviewer, 'branchmergerejected')
def test_approvingOwnCodeReview(self): # Approving your own merge proposal isn't such a significant event. reviewer = self.factory.makePerson() target_branch = self.factory.makeProductBranch(owner=reviewer) proposal = self.factory.makeBranchMergeProposal( target_branch=target_branch, registrant=reviewer) self.karma_events = [] login_person(reviewer) with BranchMergeProposalNoPreviewDiffDelta.monitor(proposal): proposal.approveBranch(reviewer, "A rev id.") self.assertOneKarmaEvent(reviewer, 'branchmergeapprovedown')
def test_rejectedOwnCodeReview(self): # Rejecting your own merge proposal isn't such a significant event # either, and I don't know why someone would, but hey, people are # strange. reviewer = self.factory.makePerson() target_branch = self.factory.makeProductBranch(owner=reviewer) proposal = self.factory.makeBranchMergeProposal( target_branch=target_branch, registrant=reviewer) self.karma_events = [] login_person(reviewer) with BranchMergeProposalNoPreviewDiffDelta.monitor(proposal): proposal.rejectBranch(reviewer, "A rev id.") self.assertOneKarmaEvent(reviewer, 'branchmergerejectedown')
def processCommands(self, context, commands): """Process the various merge proposal commands against the context.""" processing_errors = [] with BranchMergeProposalNoPreviewDiffDelta.monitor( context.merge_proposal): for command in commands: try: command.execute(context) except EmailProcessingError as error: processing_errors.append((error, command)) if len(processing_errors) > 0: errors, commands = zip(*processing_errors) raise IncomingEmailError('\n'.join(str(error) for error in errors), list(commands)) return len(commands)
def merge_detected(logger, source, target, proposal=None, merge_revno=None): """Handle the merge of source into target.""" # If the target branch is not the development focus, then don't update # the status of the source branch. logger.info( 'Merge detected: %s => %s', source.bzr_identity, target.bzr_identity) if proposal is None: # If there's no explicit merge proposal, only change the branch's # status when it has been merged into the development focus. if is_development_focus(target): mark_branch_merged(logger, source) else: with BranchMergeProposalNoPreviewDiffDelta.monitor(proposal): proposal.markAsMerged(merge_revno) # If there is an explicit merge proposal, change the branch's # status when it's been merged into a development focus or any # other series branch. if is_series_branch(proposal.target_branch): mark_branch_merged(logger, proposal.source_branch)