From cc2a6c1d30474246ad4459a3d86531631d8bf45b Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Thu, 16 Apr 2020 09:45:34 +0200 Subject: [PATCH] Fix merge dialog on protected branch with missing required statuses (#11074) (#11084) It is possible for misconfigured protected branches to have required status checks that are not in any of the current statuses: Pending, Success, Error, Failure, or Warning - presumably because the CI has not contacted us as yet. Fix #10636 by adding case: missing StatusChecks when these are missing --- options/locale/locale_en-US.ini | 1 + routers/repo/pull.go | 4 +--- templates/repo/issue/view_content/pull.tmpl | 13 +++++++++---- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini index cac7eba9f..db152c1c9 100644 --- a/options/locale/locale_en-US.ini +++ b/options/locale/locale_en-US.ini @@ -1062,6 +1062,7 @@ pulls.data_broken = This pull request is broken due to missing fork information. pulls.files_conflicted = This pull request has changes conflicting with the target branch. pulls.is_checking = "Merge conflict checking is in progress. Try again in few moments." pulls.required_status_check_failed = Some required checks were not successful. +pulls.required_status_check_missing = Some required checks are missing. pulls.required_status_check_administrator = As an administrator, you may still merge this pull request. pulls.blocked_by_approvals = "This Pull Request doesn't have enough approvals yet. %d of %d approvals granted." pulls.blocked_by_rejection = "This Pull Request has changes requested by an official reviewer." diff --git a/routers/repo/pull.go b/routers/repo/pull.go index 1960acdaa..165ea14c7 100644 --- a/routers/repo/pull.go +++ b/routers/repo/pull.go @@ -413,9 +413,7 @@ func PrepareViewPullInfo(ctx *context.Context, issue *models.Issue) *git.Compare } return false } - state := pull_service.MergeRequiredContextsCommitStatus(commitStatuses, pull.ProtectedBranch.StatusCheckContexts) - ctx.Data["RequiredStatusCheckState"] = state - ctx.Data["IsRequiredStatusCheckSuccess"] = state.IsSuccess() + ctx.Data["RequiredStatusCheckState"] = pull_service.MergeRequiredContextsCommitStatus(commitStatuses, pull.ProtectedBranch.StatusCheckContexts) } ctx.Data["HeadBranchMovedOn"] = headBranchSha != sha diff --git a/templates/repo/issue/view_content/pull.tmpl b/templates/repo/issue/view_content/pull.tmpl index 72ec47024..8e3f6d108 100644 --- a/templates/repo/issue/view_content/pull.tmpl +++ b/templates/repo/issue/view_content/pull.tmpl @@ -43,7 +43,7 @@ {{else if .IsBlockedByApprovals}}red {{else if .IsBlockedByRejection}}red {{else if and .EnableStatusCheck (or .RequiredStatusCheckState.IsFailure .RequiredStatusCheckState.IsError)}}red - {{else if and .EnableStatusCheck (or .RequiredStatusCheckState.IsPending .RequiredStatusCheckState.IsWarning)}}yellow + {{else if and .EnableStatusCheck (or (not $.LatestCommitStatus) .RequiredStatusCheckState.IsPending .RequiredStatusCheckState.IsWarning)}}yellow {{else if .Issue.PullRequest.IsChecking}}yellow {{else if .Issue.PullRequest.CanAutoMerge}}green {{else}}red{{end}}"> @@ -112,7 +112,7 @@ {{$.i18n.Tr "repo.pulls.is_checking"}} - {{else if and (not .Issue.PullRequest.CanAutoMerge) .EnableStatusCheck (not .IsRequiredStatusCheckSuccess)}} + {{else if and (not .Issue.PullRequest.CanAutoMerge) .EnableStatusCheck (not .RequiredStatusCheckState.IsSuccess)}}
{{$.i18n.Tr "repo.pulls.required_status_check_failed"}} @@ -123,9 +123,14 @@ {{$.i18n.Tr "repo.pulls.required_status_check_failed"}}
+ {{else if and .EnableStatusCheck (not .RequiredStatusCheckState.IsSuccess)}} +
+ + {{$.i18n.Tr "repo.pulls.required_status_check_missing"}} +
{{end}} - {{if or $.IsRepoAdmin (not .EnableStatusCheck) .IsRequiredStatusCheckSuccess}} - {{if and $.IsRepoAdmin .EnableStatusCheck (not .IsRequiredStatusCheckSuccess)}} + {{if or $.IsRepoAdmin (not .EnableStatusCheck) .RequiredStatusCheckState.IsSuccess}} + {{if and $.IsRepoAdmin .EnableStatusCheck (not .RequiredStatusCheckState.IsSuccess)}}
{{$.i18n.Tr "repo.pulls.required_status_check_administrator"}}