mirror of
				https://codeberg.org/forgejo/forgejo.git
				synced 2025-10-31 14:31:02 +00:00 
			
		
		
		
	Fix merge dialog on protected branch with missing required statuses (#11074)
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
This commit is contained in:
		
					parent
					
						
							
								8cdb6662c8
							
						
					
				
			
			
				commit
				
					
						a88f3663eb
					
				
			
		
					 3 changed files with 10 additions and 6 deletions
				
			
		|  | @ -1098,6 +1098,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.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.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_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.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_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." | pulls.blocked_by_rejection = "This Pull Request has changes requested by an official reviewer." | ||||||
|  |  | ||||||
|  | @ -451,9 +451,7 @@ func PrepareViewPullInfo(ctx *context.Context, issue *models.Issue) *git.Compare | ||||||
| 			} | 			} | ||||||
| 			return false | 			return false | ||||||
| 		} | 		} | ||||||
| 		state := pull_service.MergeRequiredContextsCommitStatus(commitStatuses, pull.ProtectedBranch.StatusCheckContexts) | 		ctx.Data["RequiredStatusCheckState"] = pull_service.MergeRequiredContextsCommitStatus(commitStatuses, pull.ProtectedBranch.StatusCheckContexts) | ||||||
| 		ctx.Data["RequiredStatusCheckState"] = state |  | ||||||
| 		ctx.Data["IsRequiredStatusCheckSuccess"] = state.IsSuccess() |  | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	ctx.Data["HeadBranchMovedOn"] = headBranchSha != sha | 	ctx.Data["HeadBranchMovedOn"] = headBranchSha != sha | ||||||
|  |  | ||||||
|  | @ -67,7 +67,7 @@ | ||||||
| 	{{- else if .IsBlockedByApprovals}}red | 	{{- else if .IsBlockedByApprovals}}red | ||||||
| 	{{- else if .IsBlockedByRejection}}red | 	{{- else if .IsBlockedByRejection}}red | ||||||
| 	{{- else if and .EnableStatusCheck (or .RequiredStatusCheckState.IsFailure .RequiredStatusCheckState.IsError)}}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 and .RequireSigned (not .WillSign)}}}red | 	{{- else if and .RequireSigned (not .WillSign)}}}red | ||||||
| 	{{- else if .Issue.PullRequest.IsChecking}}yellow | 	{{- else if .Issue.PullRequest.IsChecking}}yellow | ||||||
| 	{{- else if .Issue.PullRequest.CanAutoMerge}}green | 	{{- else if .Issue.PullRequest.CanAutoMerge}}green | ||||||
|  | @ -143,6 +143,11 @@ | ||||||
| 						<i class="icon icon-octicon">{{svg "octicon-x" 16}}</i> | 						<i class="icon icon-octicon">{{svg "octicon-x" 16}}</i> | ||||||
| 						{{$.i18n.Tr "repo.pulls.required_status_check_failed"}} | 						{{$.i18n.Tr "repo.pulls.required_status_check_failed"}} | ||||||
| 					</div> | 					</div> | ||||||
|  | 				{{else if and .EnableStatusCheck (not .RequiredStatusCheckState.IsSuccess)}} | ||||||
|  | 					<div class="item text red"> | ||||||
|  | 						<i class="icon icon-octicon">{{svg "octicon-x" 16}}</i> | ||||||
|  | 						{{$.i18n.Tr "repo.pulls.required_status_check_missing"}} | ||||||
|  | 					</div> | ||||||
| 				{{else if and .RequireSigned (not .WillSign)}} | 				{{else if and .RequireSigned (not .WillSign)}} | ||||||
| 					<div class="item text red"> | 					<div class="item text red"> | ||||||
| 						<i class="icon icon-octicon">{{svg "octicon-x" 16}}</i> | 						<i class="icon icon-octicon">{{svg "octicon-x" 16}}</i> | ||||||
|  | @ -153,7 +158,7 @@ | ||||||
| 						{{$.i18n.Tr (printf "repo.signing.wont_sign.%s" .WontSignReason) }} | 						{{$.i18n.Tr (printf "repo.signing.wont_sign.%s" .WontSignReason) }} | ||||||
| 					</div> | 					</div> | ||||||
| 				{{end}} | 				{{end}} | ||||||
| 				{{$notAllOverridableChecksOk := or .IsBlockedByApprovals .IsBlockedByRejection (and .EnableStatusCheck (not .IsRequiredStatusCheckSuccess))}} | 				{{$notAllOverridableChecksOk := or .IsBlockedByApprovals .IsBlockedByRejection (and .EnableStatusCheck (not .RequiredStatusCheckState.IsSuccess))}} | ||||||
| 				{{if and (or $.IsRepoAdmin (not $notAllOverridableChecksOk)) (or (not .RequireSigned) .WillSign)}} | 				{{if and (or $.IsRepoAdmin (not $notAllOverridableChecksOk)) (or (not .RequireSigned) .WillSign)}} | ||||||
| 					{{if $notAllOverridableChecksOk}} | 					{{if $notAllOverridableChecksOk}} | ||||||
| 						<div class="item text yellow"> | 						<div class="item text yellow"> | ||||||
|  | @ -337,7 +342,7 @@ | ||||||
| 						{{svg "octicon-x" 16}} | 						{{svg "octicon-x" 16}} | ||||||
| 					{{$.i18n.Tr "repo.pulls.blocked_by_rejection"}} | 					{{$.i18n.Tr "repo.pulls.blocked_by_rejection"}} | ||||||
| 					</div> | 					</div> | ||||||
| 				{{else if and .EnableStatusCheck (not .IsRequiredStatusCheckSuccess)}} | 				{{else if and .EnableStatusCheck (not .RequiredStatusCheckState.IsSuccess)}} | ||||||
| 					<div class="item text red"> | 					<div class="item text red"> | ||||||
| 						{{svg "octicon-x" 16}} | 						{{svg "octicon-x" 16}} | ||||||
| 						{{$.i18n.Tr "repo.pulls.required_status_check_failed"}} | 						{{$.i18n.Tr "repo.pulls.required_status_check_failed"}} | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue