Этот коммит содержится в:
gedi 2015-06-09 22:26:25 +03:00
родитель 951b1357b4
коммит 7e9d56a900
3 изменённых файлов: 40 добавлений и 6 удалений

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

@ -130,9 +130,6 @@ func (p *parser) parseFeature() (ft *Feature, err error) {
ft = &Feature{Path: p.path, AST: p.ast}
switch p.peek().Type {
case lexer.EOF:
// if p.ast.tail != nil {
// log.Println("peeked at:", p.peek().Type, p.ast.tail.prev.value.Type)
// }
return ft, ErrEmpty
case lexer.TAGS:
ft.Tags = p.parseTags()
@ -151,7 +148,6 @@ func (p *parser) parseFeature() (ft *Feature, err error) {
ft.Description = strings.Join(desc, "\n")
for tok = p.peek(); tok.Type != lexer.EOF; tok = p.peek() {
// log.Println("loop peeked:", tok.Type)
// there may be a background
if tok.Type == lexer.BACKGROUND {
if ft.Background != nil {
@ -167,9 +163,13 @@ func (p *parser) parseFeature() (ft *Feature, err error) {
}
// there may be tags before scenario
sc := &Scenario{}
sc := &Scenario{Tags: ft.Tags}
if tok.Type == lexer.TAGS {
sc.Tags = p.parseTags()
for _, t := range p.parseTags() {
if !sc.Tags.Has(t) {
sc.Tags = append(sc.Tags, t)
}
}
tok = p.peek()
}

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

@ -26,6 +26,12 @@ func (f *Feature) assertTitle(title string, t *testing.T) {
}
}
func (f *Feature) assertHasNumScenarios(n int, t *testing.T) {
if len(f.Scenarios) != n {
t.Fatalf("expected feature to have '%d' scenarios, but got '%d'", n, len(f.Scenarios))
}
}
func Test_parse_normal_feature(t *testing.T) {
p := &parser{
lx: lexer.New(strings.NewReader(testFeatureSamples["feature"])),

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

@ -7,6 +7,18 @@ import (
"github.com/l3pp4rd/go-behat/gherkin/lexer"
)
func (s *Scenario) assertHasTag(tag string, t *testing.T) {
if !s.Tags.Has(Tag(tag)) {
t.Fatalf("expected scenario '%s' to have '%s' tag, but it did not", s.Title, tag)
}
}
func (s *Scenario) assertHasNumTags(n int, t *testing.T) {
if len(s.Tags) != n {
t.Fatalf("expected scenario '%s' to have '%d' tags, but it has '%d'", s.Title, n, len(s.Tags))
}
}
func Test_parse_feature_file(t *testing.T) {
content := strings.Join([]string{
@ -70,4 +82,20 @@ func Test_parse_feature_file(t *testing.T) {
lexer.TAGS,
lexer.SCENARIO,
}, t)
ft.assertHasNumScenarios(3, t)
ft.Scenarios[0].assertHasNumTags(2, t)
ft.Scenarios[0].assertHasTag("global-one", t)
ft.Scenarios[0].assertHasTag("cust", t)
ft.Scenarios[1].assertHasNumTags(3, t)
ft.Scenarios[1].assertHasTag("global-one", t)
ft.Scenarios[1].assertHasTag("cust", t)
ft.Scenarios[1].assertHasTag("user", t)
ft.Scenarios[2].assertHasNumTags(3, t)
ft.Scenarios[2].assertHasTag("global-one", t)
ft.Scenarios[2].assertHasTag("cust", t)
ft.Scenarios[2].assertHasTag("todo", t)
}