mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 02:46:04 +01:00 
			
		
		
		
	Fix required contexts and commit status matching bug (#34815)
Fix #34504 Since one required context can match more than one commit statuses, we should not directly compare the lengths of `requiredCommitStatuses` and `requiredContexts` --------- Signed-off-by: Zettat123 <zettat123@gmail.com> Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
This commit is contained in:
		| @@ -38,20 +38,23 @@ func MergeRequiredContextsCommitStatus(commitStatuses []*git_model.CommitStatus, | ||||
| 	} | ||||
|  | ||||
| 	requiredCommitStatuses := make([]*git_model.CommitStatus, 0, len(commitStatuses)) | ||||
| 	allRequiredContextsMatched := true | ||||
| 	for _, gp := range requiredContextsGlob { | ||||
| 		requiredContextMatched := false | ||||
| 		for _, commitStatus := range commitStatuses { | ||||
| 			if gp.Match(commitStatus.Context) { | ||||
| 				requiredCommitStatuses = append(requiredCommitStatuses, commitStatus) | ||||
| 				break | ||||
| 				requiredContextMatched = true | ||||
| 			} | ||||
| 		} | ||||
| 		allRequiredContextsMatched = allRequiredContextsMatched && requiredContextMatched | ||||
| 	} | ||||
| 	if len(requiredCommitStatuses) == 0 { | ||||
| 		return commitstatus.CommitStatusPending | ||||
| 	} | ||||
|  | ||||
| 	returnedStatus := git_model.CalcCommitStatus(requiredCommitStatuses).State | ||||
| 	if len(requiredCommitStatuses) == len(requiredContexts) { | ||||
| 	if allRequiredContextsMatched { | ||||
| 		return returnedStatus | ||||
| 	} | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user