@@ -14,52 +14,70 @@ import (
1414)
1515
1616func TestMergeRequiredContextsCommitStatus (t * testing.T ) {
17- testCases := [][]* git_model.CommitStatus {
17+ cases := []struct {
18+ commitStatuses []* git_model.CommitStatus
19+ requiredContexts []string
20+ expected structs.CommitStatusState
21+ }{
1822 {
19- { Context : "Build 1" , State : structs . CommitStatusSuccess },
20- { Context : "Build 2" , State : structs . CommitStatusSuccess },
21- { Context : "Build 3" , State : structs .CommitStatusSuccess } ,
23+ commitStatuses : [] * git_model. CommitStatus { },
24+ requiredContexts : [] string { },
25+ expected : structs .CommitStatusSuccess ,
2226 },
2327 {
24- {Context : "Build 1" , State : structs .CommitStatusSuccess },
25- {Context : "Build 2" , State : structs .CommitStatusSuccess },
26- {Context : "Build 2t" , State : structs .CommitStatusPending },
28+ commitStatuses : []* git_model.CommitStatus {
29+ {Context : "Build xxx" , State : structs .CommitStatusSkipped },
30+ },
31+ requiredContexts : []string {"Build*" },
32+ expected : structs .CommitStatusSuccess ,
2733 },
2834 {
29- {Context : "Build 1" , State : structs .CommitStatusSuccess },
30- {Context : "Build 2" , State : structs .CommitStatusSuccess },
31- {Context : "Build 2t" , State : structs .CommitStatusFailure },
35+ commitStatuses : []* git_model.CommitStatus {
36+ {Context : "Build 1" , State : structs .CommitStatusSuccess },
37+ {Context : "Build 2" , State : structs .CommitStatusSuccess },
38+ {Context : "Build 3" , State : structs .CommitStatusSuccess },
39+ },
40+ requiredContexts : []string {"Build*" },
41+ expected : structs .CommitStatusSuccess ,
3242 },
3343 {
34- {Context : "Build 1" , State : structs .CommitStatusSuccess },
35- {Context : "Build 2" , State : structs .CommitStatusSuccess },
36- {Context : "Build 2t" , State : structs .CommitStatusSuccess },
44+ commitStatuses : []* git_model.CommitStatus {
45+ {Context : "Build 1" , State : structs .CommitStatusSuccess },
46+ {Context : "Build 2" , State : structs .CommitStatusSuccess },
47+ {Context : "Build 2t" , State : structs .CommitStatusPending },
48+ },
49+ requiredContexts : []string {"Build*" , "Build 2t*" },
50+ expected : structs .CommitStatusPending ,
3751 },
3852 {
39- {Context : "Build 1" , State : structs .CommitStatusSuccess },
40- {Context : "Build 2" , State : structs .CommitStatusSuccess },
41- {Context : "Build 2t" , State : structs .CommitStatusSuccess },
53+ commitStatuses : []* git_model.CommitStatus {
54+ {Context : "Build 1" , State : structs .CommitStatusSuccess },
55+ {Context : "Build 2" , State : structs .CommitStatusSuccess },
56+ {Context : "Build 2t" , State : structs .CommitStatusFailure },
57+ },
58+ requiredContexts : []string {"Build*" , "Build 2t*" },
59+ expected : structs .CommitStatusFailure ,
60+ },
61+ {
62+ commitStatuses : []* git_model.CommitStatus {
63+ {Context : "Build 1" , State : structs .CommitStatusSuccess },
64+ {Context : "Build 2" , State : structs .CommitStatusSuccess },
65+ {Context : "Build 2t" , State : structs .CommitStatusSuccess },
66+ },
67+ requiredContexts : []string {"Build*" , "Build 2t*" , "Build 3*" },
68+ expected : structs .CommitStatusPending ,
69+ },
70+ {
71+ commitStatuses : []* git_model.CommitStatus {
72+ {Context : "Build 1" , State : structs .CommitStatusSuccess },
73+ {Context : "Build 2" , State : structs .CommitStatusSuccess },
74+ {Context : "Build 2t" , State : structs .CommitStatusSuccess },
75+ },
76+ requiredContexts : []string {"Build*" , "Build *" , "Build 2t*" , "Build 1*" },
77+ expected : structs .CommitStatusSuccess ,
4278 },
4379 }
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- }
80+ for i , c := range cases {
81+ assert .Equal (t , c .expected , MergeRequiredContextsCommitStatus (c .commitStatuses , c .requiredContexts ), "case %d" , i )
6482 }
6583}
0 commit comments