code.gitea.io/gitea@v1.22.3/services/pull/commit_status_test.go (about)

     1  // Copyright 2024 The Gitea Authors.
     2  // All rights reserved.
     3  // SPDX-License-Identifier: MIT
     4  
     5  package pull
     6  
     7  import (
     8  	"testing"
     9  
    10  	git_model "code.gitea.io/gitea/models/git"
    11  	"code.gitea.io/gitea/modules/structs"
    12  
    13  	"github.com/stretchr/testify/assert"
    14  )
    15  
    16  func TestMergeRequiredContextsCommitStatus(t *testing.T) {
    17  	testCases := [][]*git_model.CommitStatus{
    18  		{
    19  			{Context: "Build 1", State: structs.CommitStatusSuccess},
    20  			{Context: "Build 2", State: structs.CommitStatusSuccess},
    21  			{Context: "Build 3", State: structs.CommitStatusSuccess},
    22  		},
    23  		{
    24  			{Context: "Build 1", State: structs.CommitStatusSuccess},
    25  			{Context: "Build 2", State: structs.CommitStatusSuccess},
    26  			{Context: "Build 2t", State: structs.CommitStatusPending},
    27  		},
    28  		{
    29  			{Context: "Build 1", State: structs.CommitStatusSuccess},
    30  			{Context: "Build 2", State: structs.CommitStatusSuccess},
    31  			{Context: "Build 2t", State: structs.CommitStatusFailure},
    32  		},
    33  		{
    34  			{Context: "Build 1", State: structs.CommitStatusSuccess},
    35  			{Context: "Build 2", State: structs.CommitStatusSuccess},
    36  			{Context: "Build 2t", State: structs.CommitStatusSuccess},
    37  		},
    38  		{
    39  			{Context: "Build 1", State: structs.CommitStatusSuccess},
    40  			{Context: "Build 2", State: structs.CommitStatusSuccess},
    41  			{Context: "Build 2t", State: structs.CommitStatusSuccess},
    42  		},
    43  	}
    44  	testCasesRequiredContexts := [][]string{
    45  		{"Build*"},
    46  		{"Build*", "Build 2t*"},
    47  		{"Build*", "Build 2t*"},
    48  		{"Build*", "Build 2t*", "Build 3*"},
    49  		{"Build*", "Build *", "Build 2t*", "Build 1*"},
    50  	}
    51  
    52  	testCasesExpected := []structs.CommitStatusState{
    53  		structs.CommitStatusSuccess,
    54  		structs.CommitStatusPending,
    55  		structs.CommitStatusFailure,
    56  		structs.CommitStatusPending,
    57  		structs.CommitStatusSuccess,
    58  	}
    59  
    60  	for i, commitStatuses := range testCases {
    61  		if MergeRequiredContextsCommitStatus(commitStatuses, testCasesRequiredContexts[i]) != testCasesExpected[i] {
    62  			assert.Fail(t, "Test case failed", "Test case %d failed", i+1)
    63  		}
    64  	}
    65  }