@@ -24,10 +24,11 @@ import (
24
24
)
25
25
26
26
type labelSet struct {
27
- prLabels string
28
- intLabels string
29
- e2eLabels string
30
- e2e2Labels string
27
+ prLabels string
28
+ intLabels string
29
+ e2eLabels string
30
+ e2e2Labels string
31
+ skipPrefixes string
31
32
}
32
33
33
34
func jsonDump (data interface {}) string {
@@ -86,11 +87,35 @@ func FilterLabelsContain(labels []string, substr string) []string {
86
87
return filtered
87
88
}
88
89
90
+ func SkipLabelsByPrefix (labels []string , skipPrefixes []string ) []string {
91
+ if len (skipPrefixes ) == 0 {
92
+ return labels
93
+ }
94
+ filtered := make ([]string , 0 , len (labels ))
95
+ for _ , label := range labels {
96
+ if hasSkipPrefix (label , skipPrefixes ) {
97
+ continue
98
+ }
99
+ filtered = append (filtered , label )
100
+ }
101
+ return filtered
102
+ }
103
+
104
+ func hasSkipPrefix (label string , skipPrefixes []string ) bool {
105
+ for _ , skipPrefix := range skipPrefixes {
106
+ if strings .HasPrefix (label , skipPrefix ) {
107
+ return true
108
+ }
109
+ }
110
+ return false
111
+ }
112
+
89
113
func computeTestLabels (out io.Writer , outputJSON bool , inputs * labelSet ) error {
90
114
var labels []string
91
115
var intLabels []string
92
116
var e2eLabels []string
93
117
var e2e2Labels []string
118
+ var skipPrefixes []string
94
119
95
120
if err := json .Unmarshal ([]byte (inputs .prLabels ), & labels ); err != nil {
96
121
return fmt .Errorf ("Error parsing PR labels: %w" , err )
@@ -110,10 +135,15 @@ func computeTestLabels(out io.Writer, outputJSON bool, inputs *labelSet) error {
110
135
return fmt .Errorf ("Error parsing E2E2 tests labels: %w" , err )
111
136
}
112
137
}
138
+ if len (inputs .skipPrefixes ) > 0 {
139
+ if err := json .Unmarshal ([]byte (inputs .skipPrefixes ), & skipPrefixes ); err != nil {
140
+ return fmt .Errorf ("Error parsing Skip prefixes tests labels: %w" , err )
141
+ }
142
+ }
113
143
114
- matchedIntTests := MatchWildcards (labels , intLabels , "int" )
115
- matchedE2ETests := MatchWildcards (labels , e2eLabels , "e2e" )
116
- matchedE2E2Tests := MatchWildcards (labels , e2e2Labels , "e2e2" )
144
+ matchedIntTests := MatchWildcards (labels , SkipLabelsByPrefix ( intLabels , skipPrefixes ) , "int" )
145
+ matchedE2ETests := MatchWildcards (labels , SkipLabelsByPrefix ( e2eLabels , skipPrefixes ) , "e2e" )
146
+ matchedE2E2Tests := MatchWildcards (labels , SkipLabelsByPrefix ( e2e2Labels , skipPrefixes ) , "e2e2" )
117
147
// These have to be executed in their own environment )
118
148
matchedE2EGovTests := FilterLabelsContain (matchedE2ETests , "atlas-gov" )
119
149
@@ -143,10 +173,11 @@ func computeTestLabels(out io.Writer, outputJSON bool, inputs *labelSet) error {
143
173
func main () {
144
174
useJSON := os .Getenv ("USE_JSON" ) != ""
145
175
inputs := labelSet {
146
- prLabels : os .Getenv ("PR_LABELS" ),
147
- intLabels : os .Getenv ("INT_LABELS" ),
148
- e2eLabels : os .Getenv ("E2E_LABELS" ),
149
- e2e2Labels : os .Getenv ("E2E2_LABELS" ),
176
+ prLabels : os .Getenv ("PR_LABELS" ),
177
+ intLabels : os .Getenv ("INT_LABELS" ),
178
+ e2eLabels : os .Getenv ("E2E_LABELS" ),
179
+ e2e2Labels : os .Getenv ("E2E2_LABELS" ),
180
+ skipPrefixes : os .Getenv ("SKIP_PREFIXES" ),
150
181
}
151
182
if err := computeTestLabels (os .Stdout , useJSON , & inputs ); err != nil {
152
183
fmt .Fprintf (os .Stderr , "%v\n " , err )
0 commit comments