-
Notifications
You must be signed in to change notification settings - Fork 344
/
Copy pathfilter.go
39 lines (33 loc) · 1.16 KB
/
filter.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package filter
import (
"github.com/getgauge/gauge/gauge"
"github.com/getgauge/gauge/logger"
"github.com/getgauge/gauge/util"
)
var ExecuteTags string
var Distribute int
var NumberOfExecutionStreams int
var ScenariosName []string
func FilterSpecs(specs []*gauge.Specification) []*gauge.Specification {
specs = applyFilters(specs, specsFilters())
if ExecuteTags != "" && len(specs) > 0 {
logger.Debugf(true, "The following specifications satisfy filter criteria:")
for _, s := range specs {
logger.Debug(true, util.RelPathToProjectRoot(s.FileName))
}
}
return specs
}
func FilterSpecForParallelRun(specs []*gauge.Specification, tags string) ([]*gauge.Specification, []*gauge.Specification) {
tf := &tagFilterForParallelRun{tagExp: tags}
return tf.filter(specs)
}
func specsFilters() []specsFilter {
return []specsFilter{&tagsFilter{ExecuteTags}, &specsGroupFilter{Distribute, NumberOfExecutionStreams}, &scenariosFilter{ScenariosName}}
}
func applyFilters(specsToExecute []*gauge.Specification, filters []specsFilter) []*gauge.Specification {
for _, specsFilter := range filters {
specsToExecute = specsFilter.filter(specsToExecute)
}
return specsToExecute
}