示例#1
0
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)
示例#2
0
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)
示例#3
0
    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)