diff --git a/routers/repo/pull.go b/routers/repo/pull.go index d4c99e27699b..b46680476de2 100644 --- a/routers/repo/pull.go +++ b/routers/repo/pull.go @@ -437,10 +437,6 @@ func PrepareViewPullInfo(ctx *context.Context, issue *models.Issue) *git.Compare ctx.ServerError("GetLatestCommitStatus", err) return nil } - if len(commitStatuses) > 0 { - ctx.Data["LatestCommitStatuses"] = commitStatuses - ctx.Data["LatestCommitStatus"] = models.CalcCommitStatus(commitStatuses) - } if pull.ProtectedBranch != nil && pull.ProtectedBranch.EnableStatusCheck { ctx.Data["is_context_required"] = func(context string) bool { @@ -451,7 +447,12 @@ func PrepareViewPullInfo(ctx *context.Context, issue *models.Issue) *git.Compare } return false } - ctx.Data["RequiredStatusCheckState"] = pull_service.MergeRequiredContextsCommitStatus(commitStatuses, pull.ProtectedBranch.StatusCheckContexts) + ctx.Data["RequiredStatusCheckState"], commitStatuses = pull_service.MergeRequiredContextsCommitStatus(commitStatuses, pull.ProtectedBranch.StatusCheckContexts) + } + + if len(commitStatuses) > 0 { + ctx.Data["LatestCommitStatuses"] = commitStatuses + ctx.Data["LatestCommitStatus"] = models.CalcCommitStatus(commitStatuses) } ctx.Data["HeadBranchMovedOn"] = headBranchSha != sha diff --git a/services/pull/commit_status.go b/services/pull/commit_status.go index 592aad6fc5a7..801fd1f65245 100644 --- a/services/pull/commit_status.go +++ b/services/pull/commit_status.go @@ -14,13 +14,13 @@ import ( ) // MergeRequiredContextsCommitStatus returns a commit status state for given required contexts -func MergeRequiredContextsCommitStatus(commitStatuses []*models.CommitStatus, requiredContexts []string) structs.CommitStatusState { +func MergeRequiredContextsCommitStatus(commitStatuses []*models.CommitStatus, requiredContexts []string) (structs.CommitStatusState, []*models.CommitStatus) { if len(requiredContexts) == 0 { status := models.CalcCommitStatus(commitStatuses) if status != nil { - return status.State + return status.State, commitStatuses } - return structs.CommitStatusSuccess + return structs.CommitStatusSuccess, commitStatuses } var returnedStatus = structs.CommitStatusSuccess @@ -38,14 +38,14 @@ func MergeRequiredContextsCommitStatus(commitStatuses []*models.CommitStatus, re commitStatuses = append(commitStatuses, &models.CommitStatus{ State: targetStatus, Context: ctx, - Description: "Pending", + Description: "Waiting for status to be reported", }) } if targetStatus.NoBetterThan(returnedStatus) { returnedStatus = targetStatus } } - return returnedStatus + return returnedStatus, commitStatuses } // IsCommitStatusContextSuccess returns true if all required status check contexts succeed. @@ -126,5 +126,7 @@ func GetPullRequestCommitStatusState(pr *models.PullRequest) (structs.CommitStat return "", errors.Wrap(err, "GetLatestCommitStatus") } - return MergeRequiredContextsCommitStatus(commitStatuses, pr.ProtectedBranch.StatusCheckContexts), nil + result, _ := MergeRequiredContextsCommitStatus(commitStatuses, pr.ProtectedBranch.StatusCheckContexts) + + return result, nil }