Skip to content

Commit

Permalink
Added warning message for invalid scenarios in running of scenarios w…
Browse files Browse the repository at this point in the history
…ith name (#1222)

* Added warning message for invalid scenarios in running of scenarios with name, #1216

* Added local function inside the parent function, #1216
  • Loading branch information
shubhamsc authored and sriv committed Oct 12, 2018
1 parent 0837f62 commit ded6a56
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 7 deletions.
8 changes: 2 additions & 6 deletions cmd/list.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ import (
"github.com/getgauge/gauge/logger"
"github.com/getgauge/gauge/parser"
"github.com/spf13/cobra"
"github.com/getgauge/gauge/filter"
)

var (
Expand Down Expand Up @@ -93,12 +94,7 @@ func listTags(s []*gauge.Specification, f handleResult) {
}

func listScenarios(s []*gauge.Specification, f handleResult) {
allScenarios := []string{}
for _, spec := range s {
for _, scenario := range spec.Scenarios {
allScenarios = append(allScenarios, scenario.Heading.Value)
}
}
allScenarios := filter.GetAllScenarios(s)
f(sortedDistinctElements(allScenarios))
}

Expand Down
34 changes: 33 additions & 1 deletion filter/specItemFilter.go
Original file line number Diff line number Diff line change
Expand Up @@ -233,11 +233,43 @@ func validateTagExpression(tagExpression string) {

func filterSpecsByScenarioName(specs []*gauge.Specification, scenariosName []string) []*gauge.Specification {
filteredSpecs := make([]*gauge.Specification, 0)
scenarios := filterValidScenarios(specs, scenariosName)
for _, spec := range specs {
spec.Filter(newScenarioFilterBasedOnName(scenariosName))
spec.Filter(newScenarioFilterBasedOnName(scenarios))
if len(spec.Scenarios) != 0 {
filteredSpecs = append(filteredSpecs, spec)
}
}
return filteredSpecs
}

func filterValidScenarios(specs []*gauge.Specification, headings []string) []string {
filteredScenarios := make([]string, 0)
allScenarios := GetAllScenarios(specs)
var exists = func(scenarios []string, heading string) bool {
for _, scenario := range scenarios {
if strings.Compare(scenario, heading) == 0 {
return true
}
}
return false
}
for _, heading := range headings {
if exists(allScenarios,heading) {
filteredScenarios = append(filteredScenarios,heading)
} else {
logger.Warningf(true,"Warning: scenario name - \"%s\" not found",heading)
}
}
return filteredScenarios;
}

func GetAllScenarios(specs []*gauge.Specification) []string {
allScenarios := []string{}
for _, spec := range specs{
for _, scenario := range spec.Scenarios {
allScenarios = append(allScenarios, scenario.Heading.Value)
}
}
return allScenarios
}
22 changes: 22 additions & 0 deletions filter/specItemFilter_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -764,3 +764,25 @@ func (s *MySuite) TestFilterMultipleScenariosByName(c *C) {
specs = filterSpecsByScenarioName(specs, scenarios)
c.Assert(len(specs[0].Scenarios), Equals, 2)
}

func (s *MySuite) TestFilterInvalidScenarios(c *C) {
scenario1 := &gauge.Scenario{
Heading: &gauge.Heading{Value: "First Scenario"},
}
scenario2 := &gauge.Scenario{
Heading: &gauge.Heading{Value: "Second Scenario"},
}
spec1 := &gauge.Specification{
Items: []gauge.Item{scenario1, scenario2},
Scenarios: []*gauge.Scenario{scenario1, scenario2},
}
var scenarios = []string{"First Scenario","Third Scenario"}

var specs []*gauge.Specification
specs = append(specs, spec1)

c.Assert(len(specs[0].Scenarios), Equals, 2)
filteredScenarios := filterValidScenarios(specs, scenarios)
c.Assert(len(filteredScenarios), Equals, 1)
c.Assert(filteredScenarios[0],Equals, "First Scenario")
}

0 comments on commit ded6a56

Please sign in to comment.