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  }