Skip to content

Commit eb6779c

Browse files
authored
Merge pull request cucumber#329 from cucumber/internal-parser-pkg
Moved the parser code to a new internal pkg
2 parents 783f5e4 + 8133126 commit eb6779c

File tree

5 files changed

+44
-32
lines changed

5 files changed

+44
-32
lines changed

parser.go internal/parser/parser.go

+6-4
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package godog
1+
package parser
22

33
import (
44
"bytes"
@@ -19,7 +19,8 @@ import (
1919

2020
var pathLineRe = regexp.MustCompile(`:([\d]+)$`)
2121

22-
func extractFeaturePathLine(p string) (string, int) {
22+
// ExtractFeaturePathLine ...
23+
func ExtractFeaturePathLine(p string) (string, int) {
2324
line := -1
2425
retPath := p
2526
if m := pathLineRe.FindStringSubmatch(p); len(m) > 0 {
@@ -80,7 +81,7 @@ func parseFeatureDir(dir string, newIDFunc func() string) ([]*models.Feature, er
8081
func parsePath(path string) ([]*models.Feature, error) {
8182
var features []*models.Feature
8283

83-
path, line := extractFeaturePathLine(path)
84+
path, line := ExtractFeaturePathLine(path)
8485

8586
fi, err := os.Stat(path)
8687
if err != nil {
@@ -112,7 +113,8 @@ func parsePath(path string) ([]*models.Feature, error) {
112113
return append(features, ft), nil
113114
}
114115

115-
func parseFeatures(filter string, paths []string) ([]*models.Feature, error) {
116+
// ParseFeatures ...
117+
func ParseFeatures(filter string, paths []string) ([]*models.Feature, error) {
116118
var order int
117119

118120
featureIdxs := make(map[string]int)

internal/parser/parser_test.go

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package parser_test
2+
3+
import (
4+
"testing"
5+
6+
"github.com/stretchr/testify/assert"
7+
8+
"github.com/cucumber/godog/internal/parser"
9+
)
10+
11+
func Test_FeatureFilePathParser(t *testing.T) {
12+
type Case struct {
13+
input string
14+
path string
15+
line int
16+
}
17+
18+
cases := []Case{
19+
{"/home/test.feature", "/home/test.feature", -1},
20+
{"/home/test.feature:21", "/home/test.feature", 21},
21+
{"test.feature", "test.feature", -1},
22+
{"test.feature:2", "test.feature", 2},
23+
{"", "", -1},
24+
{"/c:/home/test.feature", "/c:/home/test.feature", -1},
25+
{"/c:/home/test.feature:3", "/c:/home/test.feature", 3},
26+
{"D:\\home\\test.feature:3", "D:\\home\\test.feature", 3},
27+
}
28+
29+
for _, c := range cases {
30+
p, ln := parser.ExtractFeaturePathLine(c.input)
31+
assert.Equal(t, p, c.path)
32+
assert.Equal(t, ln, c.line)
33+
}
34+
}

run.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import (
1616

1717
"github.com/cucumber/godog/colors"
1818
"github.com/cucumber/godog/internal/models"
19+
"github.com/cucumber/godog/internal/parser"
1920
"github.com/cucumber/godog/internal/storage"
2021
"github.com/cucumber/godog/internal/utils"
2122
)
@@ -180,7 +181,7 @@ func runWithOptions(suiteName string, runner runner, opt Options) int {
180181
runner.fmt = formatter(suiteName, output)
181182

182183
var err error
183-
if runner.features, err = parseFeatures(opt.Tags, opt.Paths); err != nil {
184+
if runner.features, err = parser.ParseFeatures(opt.Tags, opt.Paths); err != nil {
184185
fmt.Fprintln(os.Stderr, err)
185186
return exitOptionError
186187
}

run_test.go

-26
Original file line numberDiff line numberDiff line change
@@ -256,32 +256,6 @@ func bufErrorPipe(t *testing.T) (io.ReadCloser, func()) {
256256
}
257257
}
258258

259-
func Test_FeatureFilePathParser(t *testing.T) {
260-
261-
type Case struct {
262-
input string
263-
path string
264-
line int
265-
}
266-
267-
cases := []Case{
268-
{"/home/test.feature", "/home/test.feature", -1},
269-
{"/home/test.feature:21", "/home/test.feature", 21},
270-
{"test.feature", "test.feature", -1},
271-
{"test.feature:2", "test.feature", 2},
272-
{"", "", -1},
273-
{"/c:/home/test.feature", "/c:/home/test.feature", -1},
274-
{"/c:/home/test.feature:3", "/c:/home/test.feature", 3},
275-
{"D:\\home\\test.feature:3", "D:\\home\\test.feature", 3},
276-
}
277-
278-
for _, c := range cases {
279-
p, ln := extractFeaturePathLine(c.input)
280-
assert.Equal(t, p, c.path)
281-
assert.Equal(t, ln, c.line)
282-
}
283-
}
284-
285259
func Test_RandomizeRun(t *testing.T) {
286260
const noRandomFlag = 0
287261
const createRandomSeedFlag = -1

suite_context_test.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import (
1717
"github.com/cucumber/godog/colors"
1818
"github.com/cucumber/godog/internal/formatters"
1919
"github.com/cucumber/godog/internal/models"
20+
"github.com/cucumber/godog/internal/parser"
2021
"github.com/cucumber/godog/internal/storage"
2122
"github.com/cucumber/godog/internal/tags"
2223
"github.com/cucumber/godog/internal/utils"
@@ -418,7 +419,7 @@ func (tc *godogFeaturesScenario) featurePath(path string) error {
418419
}
419420

420421
func (tc *godogFeaturesScenario) parseFeatures() error {
421-
fts, err := parseFeatures("", tc.paths)
422+
fts, err := parser.ParseFeatures("", tc.paths)
422423
if err != nil {
423424
return err
424425
}

0 commit comments

Comments
 (0)