Skip to content

Commit a903086

Browse files
committed
feat: giving error info when having duplicated names
1 parent 5af79c7 commit a903086

File tree

3 files changed

+29
-1
lines changed

3 files changed

+29
-1
lines changed

pkg/testing/parser.go

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,19 @@ func Parse(configFile string) (testSuite *TestSuite, err error) {
4646
// ParseFromData parses data and returns the test suite
4747
func ParseFromData(data []byte) (testSuite *TestSuite, err error) {
4848
testSuite = &TestSuite{}
49-
err = yaml.Unmarshal(data, testSuite)
49+
if err = yaml.Unmarshal(data, testSuite); err != nil {
50+
return
51+
}
52+
53+
names := map[string]struct{}{}
54+
for _, item := range testSuite.Items {
55+
if _, ok := names[item.Name]; !ok {
56+
names[item.Name] = struct{}{}
57+
} else {
58+
err = fmt.Errorf("having duplicated name '%s'", item.Name)
59+
break
60+
}
61+
}
5062
return
5163
}
5264

pkg/testing/parser_test.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,14 @@ func TestParse(t *testing.T) {
3535
assert.NotNil(t, err)
3636
}
3737

38+
func TestDuplicatedNames(t *testing.T) {
39+
_, err := Parse("testdata/duplicated-names.yaml")
40+
assert.NotNil(t, err)
41+
42+
_, err = ParseFromData([]byte("fake"))
43+
assert.NotNil(t, err)
44+
}
45+
3846
func TestRequestRender(t *testing.T) {
3947
tests := []struct {
4048
name string
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
name: duplicated names
2+
items:
3+
- name: projects
4+
request:
5+
api: https://foo
6+
- name: projects
7+
request:
8+
api: https://foo

0 commit comments

Comments
 (0)