Добавлена поддержка тестов с f-тегом

Этот коммит содержится в:
Softonik 2022-08-22 14:00:00 +03:00 коммит произвёл Nikolay Kopitonenko
родитель fca7fb6e4a
коммит 3f03171dab
4 изменённых файлов: 106 добавлений и 0 удалений

Просмотреть файл

@ -64,6 +64,30 @@ func TestSnippets() {
'`)
}
func TestTags() {
Bash(`sudo docker run -ti --rm \
-h host \
--net=bridge \
-v /etc/localtime:/etc/localtime:ro \
-v ` + GolangVolume + `:/usr/local/go:ro \
\
-v /gopath:/gopath:rw \
-v ${PWD}:/app \
\
-e GOPATH=/gopath \
-e GOCACHE=/gopath/gocache \
\
-w /app \
-u 1000 \
\
--entrypoint=/bin/bash \
\
` + ImageName + " -c '" + `set -x; \
godog run -f progress -c 4 \
features/tags.feature \
'`)
}
func Install() {
Bash(`sudo docker run -ti --rm \
-h host \

Просмотреть файл

@ -125,3 +125,31 @@ Feature: tag filters
"""
a feature path "four"
"""
Scenario: empty filter and scenarios with f-tag - are executed only
Given a feature "normal.feature" file:
"""
Feature: f-tagged
Scenario: one
Given a feature path "one"
Scenario: two
Given a feature path "two"
@f
Scenario: three
Given a feature path "three"
@f
Scenario: four
Given a feature path "four"
"""
When I run feature suite with tags ""
Then the suite should have passed
And I should have 2 scenario registered
And the following steps should be passed:
"""
a feature path "three"
a feature path "four"
"""

Просмотреть файл

@ -10,6 +10,11 @@ import (
// array of pickles and returned the filtered list.
func ApplyTagFilter(filter string, pickles []*messages.Pickle) []*messages.Pickle {
if filter == "" {
ff := filterF(pickles)
if len(ff) > 0 {
return ff
}
return pickles
}
@ -60,3 +65,15 @@ func contains(tags []*messages.PickleTag, tag string) bool {
return false
}
func filterF(pickles []*messages.Pickle) []*messages.Pickle {
var result = []*messages.Pickle{}
for _, pickle := range pickles {
if contains(pickle.Tags, "f") {
result = append(result, pickle)
}
}
return result
}

37
internal/tags/tag_filter_f_test.go Обычный файл
Просмотреть файл

@ -0,0 +1,37 @@
package tags_test
import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/cucumber/godog/internal/tags"
)
type testcaseF struct {
filter string
input []*pickle
expected []*pickle
}
var testdataNonF = []*pickle{p1n, p2n, p3n}
var testdataF = []*pickle{p1n, p2n, p3withF}
var p1n = &pickle{Id: "one", Tags: []*tag{}}
var p2n = &pickle{Id: "two", Tags: []*tag{{Name: "@wip"}}}
var p3n = &pickle{Id: "three", Tags: []*tag{}}
var p3withF = &pickle{Id: "three", Tags: []*tag{{Name: "@f"}}}
var testcasesF = []testcaseF{
{filter: "", input: testdataNonF, expected: testdataNonF},
{filter: "", input: testdataF, expected: []*pickle{p3withF}},
{filter: "@wip", input: testdataF, expected: []*pickle{p2n}},
}
func Test_ApplyTagFilterWithF(t *testing.T) {
for _, tc := range testcasesF {
t.Run("", func(t *testing.T) {
actual := tags.ApplyTagFilter(tc.filter, tc.input)
assert.Equal(t, tc.expected, actual)
})
}
}