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