def _UpdatePostAndMergeDeferred( difference_details, commit_infos, authors_deltas, bug_id, tags, url): if not bug_id: return commit_cache_key = _GenerateCommitCacheKey(commit_infos) # Bring it all together. owner, sheriff, cc_list = _ComputePostOwnerSheriffCCList(commit_infos, authors_deltas) comment = _FormatComment(difference_details, commit_infos, sheriff, tags, url) issue_tracker = issue_tracker_service.IssueTrackerService( utils.ServiceAccountHttp()) merge_details, cc_list = _ComputePostMergeDetails( issue_tracker, commit_cache_key, cc_list) current_bug_status = _GetBugStatus(issue_tracker, bug_id) if not current_bug_status: return status = None bug_owner = None if current_bug_status in ['Untriaged', 'Unconfirmed', 'Available']: # Set the bug status and owner if this bug is opened and unowned. status = 'Assigned' bug_owner = owner issue_tracker.AddBugComment(bug_id, comment, status=status, cc_list=sorted(cc_list), owner=bug_owner, merge_issue=merge_details.get('id')) update_bug_with_results.UpdateMergeIssue( commit_cache_key, merge_details, bug_id)
def UpdatePostAndMergeDeferred(bug_update_builder, bug_id, tags, url): if not bug_id: return commit_cache_key = bug_update_builder.GenerateCommitCacheKey() bug_update = bug_update_builder.BuildUpdate(tags, url) issue_tracker = issue_tracker_service.IssueTrackerService( utils.ServiceAccountHttp()) merge_details, cc_list = _ComputePostMergeDetails(issue_tracker, commit_cache_key, bug_update.cc_list) current_bug_status = _GetBugStatus(issue_tracker, bug_id) if not current_bug_status: return status = None bug_owner = None if current_bug_status in ['Untriaged', 'Unconfirmed', 'Available']: # Set the bug status and owner if this bug is opened and unowned. status = 'Assigned' bug_owner = bug_update.owner issue_tracker.AddBugComment(bug_id, bug_update.comment_text, status=status, cc_list=sorted(cc_list), owner=bug_owner, labels=bug_update.labels, merge_issue=merge_details.get('id')) update_bug_with_results.UpdateMergeIssue(commit_cache_key, merge_details, bug_id)
def _FormatAndPostBugCommentOnComplete(self): if not self.comparison_mode: # There is no comparison metric. title = "<b>%s Job complete. See results below.</b>" % _ROUND_PUSHPIN self._PostBugComment('\n'.join((title, self.url))) return # There is a comparison metric. differences = self.state.Differences() if not differences: title = "<b>%s Couldn't reproduce a difference.</b>" % _ROUND_PUSHPIN self._PostBugComment('\n'.join((title, self.url))) return # Include list of Changes. difference_details = [] commit_infos = [] for change_a, change_b in differences: if change_b.patch: commit_info = change_b.patch.AsDict() else: commit_info = change_b.last_commit.AsDict() values_a = self.state.ResultValues(change_a) values_b = self.state.ResultValues(change_b) difference = _FormatDifferenceForBug(commit_info, values_a, values_b, self.state.metric) difference_details.append(difference) commit_infos.append(commit_info) # Header. commit_cache_key = None if len(differences) == 1: commit_cache_key = update_bug_with_results._GetCommitHashCacheKey( commit_infos[0]['git_hash']) owner, sheriff, cc_list = self._ComputePostOwnerSheriffCCList( commit_infos) merge_details, cc_list = self._ComputePostMergeDetails( commit_cache_key, cc_list) # Bring it all together. comment = self._FormatComment(difference_details, commit_infos, sheriff) current_bug_status = self._GetBugStatus() if (not current_bug_status or current_bug_status in ['Untriaged', 'Unconfirmed', 'Available']): # Set the bug status and owner if this bug is opened and unowned. self._PostBugComment(comment, status='Assigned', cc_list=sorted(cc_list), owner=owner, merge_issue=merge_details.get('id')) else: # Only update the comment and cc list if this bug is assigned or closed. self._PostBugComment(comment, cc_list=sorted(cc_list), merge_issue=merge_details.get('id')) update_bug_with_results.UpdateMergeIssue(commit_cache_key, merge_details, self.bug_id)