Skip to content

Commit c6594a2

Browse files
authored
[chore] Change JSON/Proto tests to tests for empty and filled types (#13618)
Signed-off-by: Bogdan Drutu <[email protected]>
1 parent 03ff825 commit c6594a2

File tree

62 files changed

+2209
-1649
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

62 files changed

+2209
-1649
lines changed

internal/cmd/pdatagen/internal/field.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ type Field interface {
1919
GenerateSizeProto(ms *messageStruct) string
2020

2121
GenerateMarshalProto(ms *messageStruct) string
22+
23+
GenerateTestValue(ms *messageStruct) string
2224
}
2325

2426
func origAccessor(hasWrapper bool) string {

internal/cmd/pdatagen/internal/message_field.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,8 @@ func (mf *MessageField) GenerateSetWithTestValue(ms *messageStruct) string {
5757
return executeTemplate(t, mf.templateFields(ms))
5858
}
5959

60+
func (mf *MessageField) GenerateTestValue(*messageStruct) string { return "" }
61+
6062
func (mf *MessageField) GenerateCopyOrig(ms *messageStruct) string {
6163
t := template.Must(templateNew("messageCopyOrigTemplate").Parse(messageCopyOrigTemplate))
6264
return executeTemplate(t, mf.templateFields(ms))

internal/cmd/pdatagen/internal/one_of_field.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ const oneOfAccessorTestTemplate = `func Test{{ .structName }}_{{ .typeFuncName }
3333
{{ end }}
3434
`
3535

36+
const oneOfTestValuesTemplate = `{{- range .values }}{{ .GenerateTestValue $.baseStruct $.OneOfField }}{{- end }}`
37+
3638
const oneOfCopyOrigTemplate = `switch t := src.{{ .originFieldName }}.(type) {
3739
{{- range .values }}
3840
{{ .GenerateCopyOrig $.baseStruct $.OneOfField }}
@@ -95,6 +97,11 @@ func (of *OneOfField) GenerateSetWithTestValue(ms *messageStruct) string {
9597
return of.values[of.testValueIdx].GenerateSetWithTestValue(ms, of)
9698
}
9799

100+
func (of *OneOfField) GenerateTestValue(ms *messageStruct) string {
101+
t := template.Must(templateNew("oneOfTestValuesTemplate").Parse(oneOfTestValuesTemplate))
102+
return executeTemplate(t, of.templateFields(ms))
103+
}
104+
98105
func (of *OneOfField) GenerateCopyOrig(ms *messageStruct) string {
99106
t := template.Must(templateNew("oneOfCopyOrigTemplate").Parse(oneOfCopyOrigTemplate))
100107
return executeTemplate(t, of.templateFields(ms))
@@ -144,6 +151,7 @@ type oneOfValue interface {
144151
GenerateAccessors(ms *messageStruct, of *OneOfField) string
145152
GenerateTests(ms *messageStruct, of *OneOfField) string
146153
GenerateSetWithTestValue(ms *messageStruct, of *OneOfField) string
154+
GenerateTestValue(ms *messageStruct, of *OneOfField) string
147155
GenerateCopyOrig(ms *messageStruct, of *OneOfField) string
148156
GenerateType(ms *messageStruct, of *OneOfField) string
149157
GenerateMarshalJSON(ms *messageStruct, of *OneOfField) string

internal/cmd/pdatagen/internal/one_of_message_value.go

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,18 +46,25 @@ const oneOfMessageAccessorsTestTemplate = `func Test{{ .structName }}_{{ .fieldN
4646
}
4747
`
4848

49-
const oneOfMessageSetTestTemplate = `orig.{{ .originOneOfFieldName }} = &{{ .originStructName }}_{{ .fieldName -}}{
49+
const oneOfMessageSetTestTemplate = `orig.{{ .originOneOfFieldName }} = &{{ .originStructType }}{
5050
{{- .fieldName }}: &{{ .originFieldPackageName }}.{{ .fieldName }}{}}
5151
FillOrigTest{{ .fieldOriginName }}(orig.Get{{ .returnType }}())`
5252

53+
const oneOfMessageTestValuesTemplate = `
54+
"oneof_{{ .lowerFieldName }}": { {{ .originOneOfFieldName }}: func() *{{ .originStructType }}{
55+
val := &{{ .originFieldPackageName }}.{{ .fieldName }}{}
56+
FillOrigTest{{ .fieldOriginName }}(val)
57+
return &{{ .originStructType }}{{ "{" }}{{ .fieldName }}: val}
58+
}()},`
59+
5360
const oneOfMessageCopyOrigTemplate = ` case *{{ .originStructType }}:
5461
{{ .lowerFieldName }} := &{{ .originFieldPackageName}}.{{ .fieldName }}{}
5562
CopyOrig{{ .fieldOriginName }}({{ .lowerFieldName }}, t.{{ .fieldName }})
5663
dest.{{ .originOneOfFieldName }} = &{{ .originStructType }}{
5764
{{ .fieldName }}: {{ .lowerFieldName }},
5865
}`
5966

60-
const oneOfMessageTypeTemplate = `case *{{ .originStructName }}_{{ .originFieldName }}:
67+
const oneOfMessageTypeTemplate = `case *{{ .originStructType }}:
6168
return {{ .typeName }}`
6269

6370
const oneOfMessageUnmarshalJSONTemplate = `case "{{ lowerFirst .originFieldName }}"{{ if needSnake .originFieldName -}}, "{{ toSnake .originFieldName }}"{{- end }}:
@@ -91,6 +98,11 @@ func (omv *OneOfMessageValue) GenerateSetWithTestValue(ms *messageStruct, of *On
9198
return executeTemplate(t, omv.templateFields(ms, of))
9299
}
93100

101+
func (omv *OneOfMessageValue) GenerateTestValue(ms *messageStruct, of *OneOfField) string {
102+
t := template.Must(templateNew("oneOfMessageTestValuesTemplate").Parse(oneOfMessageTestValuesTemplate))
103+
return executeTemplate(t, omv.templateFields(ms, of))
104+
}
105+
94106
func (omv *OneOfMessageValue) GenerateCopyOrig(ms *messageStruct, of *OneOfField) string {
95107
t := template.Must(templateNew("oneOfMessageCopyOrigTemplate").Parse(oneOfMessageCopyOrigTemplate))
96108
return executeTemplate(t, omv.templateFields(ms, of))

internal/cmd/pdatagen/internal/one_of_primitive_value.go

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,14 +44,17 @@ const oneOfPrimitiveAccessorTestTemplate = `func Test{{ .structName }}_{{ .acces
4444
}
4545
`
4646

47-
const oneOfPrimitiveSetTestTemplate = `orig.{{ .originOneOfFieldName }} = &{{ .originStructName }}_{{ .originFieldName }}{
47+
const oneOfPrimitiveSetTestTemplate = `orig.{{ .originOneOfFieldName }} = &{{ .originStructType }}{
4848
{{- .originFieldName }}: {{ .testValue }}}`
4949

50-
const oneOfPrimitiveCopyOrigTemplate = `case *{{ .originStructName }}_{{ .originFieldName }}:
51-
dest.{{ .originOneOfFieldName }} = &{{ .originStructName }}_{{ .originFieldName }}{
50+
const oneOfPrimitiveTestValuesTemplate = `
51+
"oneof_{{ .lowerFieldName }}": { {{ .originOneOfFieldName }}: &{{ .originStructType }}{{ "{" }}{{ .originFieldName }}: {{ .defaultVal }}} },`
52+
53+
const oneOfPrimitiveCopyOrigTemplate = `case *{{ .originStructType }}:
54+
dest.{{ .originOneOfFieldName }} = &{{ .originStructType }}{
5255
{{- .originFieldName }}: t.{{ .originFieldName }}}`
5356

54-
const oneOfPrimitiveTypeTemplate = `case *{{ .originStructName }}_{{ .originFieldName }}:
57+
const oneOfPrimitiveTypeTemplate = `case *{{ .originStructType }}:
5558
return {{ .typeName }}`
5659

5760
const oneOfPrimitiveUnmarshalJSONTemplate = `case "{{ lowerFirst .originFieldName }}"{{ if needSnake .originFieldName -}}, "{{ toSnake .originFieldName }}"{{- end }}:
@@ -85,6 +88,11 @@ func (opv *OneOfPrimitiveValue) GenerateSetWithTestValue(ms *messageStruct, of *
8588
return executeTemplate(t, opv.templateFields(ms, of))
8689
}
8790

91+
func (opv *OneOfPrimitiveValue) GenerateTestValue(ms *messageStruct, of *OneOfField) string {
92+
t := template.Must(templateNew("oneOfPrimitiveTestValuesTemplate").Parse(oneOfPrimitiveTestValuesTemplate))
93+
return executeTemplate(t, opv.templateFields(ms, of))
94+
}
95+
8896
func (opv *OneOfPrimitiveValue) GenerateCopyOrig(ms *messageStruct, of *OneOfField) string {
8997
t := template.Must(templateNew("oneOfPrimitiveCopyOrigTemplate").Parse(oneOfPrimitiveCopyOrigTemplate))
9098
return executeTemplate(t, opv.templateFields(ms, of))

internal/cmd/pdatagen/internal/optional_primitive_field.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,9 @@ const optionalPrimitiveAccessorsTestTemplate = `func Test{{ .structName }}_{{ .f
5555
const optionalPrimitiveSetTestTemplate = `orig.{{ .fieldName }}_ = &{{ .originStructType }}{
5656
{{- .fieldName }}: {{ .testValue }}}`
5757

58+
const optionalPrimitiveTestValuesTemplate = `
59+
"default_{{ .lowerFieldName }}": { {{ .fieldName }}_: &{{ .originStructType }}{{ "{" }}{{ .fieldName }}: {{ .defaultVal }}} },`
60+
5861
const optionalPrimitiveCopyOrigTemplate = `if src{{ .fieldName }}, ok := src.{{ .fieldName }}_.(*{{ .originStructType }}); ok {
5962
dest{{ .fieldName }}, ok := dest.{{ .fieldName }}_.(*{{ .originStructType }})
6063
if !ok {
@@ -90,6 +93,11 @@ func (opv *OptionalPrimitiveField) GenerateSetWithTestValue(ms *messageStruct) s
9093
return executeTemplate(t, opv.templateFields(ms))
9194
}
9295

96+
func (opv *OptionalPrimitiveField) GenerateTestValue(ms *messageStruct) string {
97+
t := template.Must(templateNew("optionalPrimitiveTestValuesTemplate").Parse(optionalPrimitiveTestValuesTemplate))
98+
return executeTemplate(t, opv.templateFields(ms))
99+
}
100+
93101
func (opv *OptionalPrimitiveField) GenerateCopyOrig(ms *messageStruct) string {
94102
t := template.Must(templateNew("optionalPrimitiveCopyOrigTemplate").Parse(optionalPrimitiveCopyOrigTemplate))
95103
return executeTemplate(t, opv.templateFields(ms))

internal/cmd/pdatagen/internal/primitive_field.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,8 @@ func (pf *PrimitiveField) GenerateSetWithTestValue(ms *messageStruct) string {
7272
return executeTemplate(t, pf.templateFields(ms))
7373
}
7474

75+
func (pf *PrimitiveField) GenerateTestValue(*messageStruct) string { return "" }
76+
7577
func (pf *PrimitiveField) GenerateCopyOrig(ms *messageStruct) string {
7678
t := template.Must(templateNew("primitiveCopyOrigTemplate").Parse(primitiveCopyOrigTemplate))
7779
return executeTemplate(t, pf.templateFields(ms))

internal/cmd/pdatagen/internal/slice_field.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,8 @@ func (sf *SliceField) GenerateSetWithTestValue(ms *messageStruct) string {
6363
return executeTemplate(t, sf.templateFields(ms))
6464
}
6565

66+
func (sf *SliceField) GenerateTestValue(*messageStruct) string { return "" }
67+
6668
func (sf *SliceField) GenerateCopyOrig(ms *messageStruct) string {
6769
t := template.Must(templateNew("sliceCopyOrigTemplate").Parse(sliceCopyOrigTemplate))
6870
return executeTemplate(t, sf.templateFields(ms))

internal/cmd/pdatagen/internal/templates/message_internal_test.go.tmpl

Lines changed: 40 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -22,46 +22,55 @@ func TestCopyOrig{{ .originName }}(t *testing.T) {
2222
assert.Equal(t, src, dest)
2323
}
2424

25-
func TestMarshalAndUnmarshalJSONOrig{{ .originName }}(t *testing.T) {
26-
src := &{{ .originFullName }}{}
27-
FillOrigTest{{ .originName }}(src)
28-
stream := json.BorrowStream(nil)
29-
defer json.ReturnStream(stream)
30-
MarshalJSONOrig{{ .originName }}(src, stream)
31-
require.NoError(t, stream.Error())
32-
33-
// Append an unknown field at the start to ensure unknown fields are skipped
34-
// and the unmarshal logic continues.
35-
buf := stream.Buffer()
36-
assert.EqualValues(t, '{', buf[0])
37-
iter := json.BorrowIterator(append([]byte(`{"unknown": "string",`), buf[1:]...))
25+
func TestMarshalAndUnmarshalJSONOrig{{ .originName }}Unknown(t *testing.T) {
26+
iter := json.BorrowIterator([]byte(`{"unknown": "string"}`))
3827
defer json.ReturnIterator(iter)
3928
dest := &{{ .originFullName }}{}
4029
UnmarshalJSONOrig{{ .originName }}(dest, iter)
4130
require.NoError(t, iter.Error())
31+
assert.Equal(t, &{{ .originFullName }}{}, dest)
32+
}
4233

43-
assert.Equal(t, src, dest)
34+
func TestMarshalAndUnmarshalJSONOrig{{ .originName }}(t *testing.T) {
35+
for name, src := range getEncodingTestValues{{ .originName }}() {
36+
t.Run(name, func(t *testing.T) {
37+
stream := json.BorrowStream(nil)
38+
defer json.ReturnStream(stream)
39+
MarshalJSONOrig{{ .originName }}(src, stream)
40+
require.NoError(t, stream.Error())
41+
42+
iter := json.BorrowIterator(stream.Buffer())
43+
defer json.ReturnIterator(iter)
44+
dest := &{{ .originFullName }}{}
45+
UnmarshalJSONOrig{{ .originName }}(dest, iter)
46+
require.NoError(t, iter.Error())
47+
48+
assert.Equal(t, src, dest)
49+
})
50+
}
4451
}
4552

4653
func TestMarshalAndUnmarshalProtoOrig{{ .originName }}(t *testing.T) {
47-
src := &{{ .originFullName }}{}
48-
FillOrigTest{{ .originName }}(src)
49-
buf := make([]byte, SizeProtoOrig{{ .originName }}(src))
50-
gotSize := MarshalProtoOrig{{ .originName }}(src, buf)
51-
assert.Equal(t, len(buf), gotSize)
54+
for name, src := range getEncodingTestValues{{ .originName }}(){
55+
t.Run(name, func(t *testing.T) {
56+
buf := make([]byte, SizeProtoOrig{{ .originName }}(src))
57+
gotSize := MarshalProtoOrig{{ .originName }}(src, buf)
58+
assert.Equal(t, len(buf), gotSize)
5259

53-
dest := &{{ .originFullName }}{}
54-
require.NoError(t, UnmarshalProtoOrig{{ .originName }}(dest, buf))
55-
assert.Equal(t, src, dest)
60+
dest := &{{ .originFullName }}{}
61+
require.NoError(t, UnmarshalProtoOrig{{ .originName }}(dest, buf))
62+
assert.Equal(t, src, dest)
63+
})
64+
}
5665
}
5766

58-
func TestMarshalAndUnmarshalProtoOrigEmpty{{ .originName }}(t *testing.T) {
59-
src := &{{ .originFullName }}{}
60-
buf := make([]byte, SizeProtoOrig{{ .originName }}(src))
61-
gotSize := MarshalProtoOrig{{ .originName }}(src, buf)
62-
assert.Equal(t, len(buf), gotSize)
63-
64-
dest := &{{ .originFullName }}{}
65-
require.NoError(t, UnmarshalProtoOrig{{ .originName }}(dest, buf))
66-
assert.Equal(t, src, dest)
67+
func getEncodingTestValues{{ .originName }}() map[string]*{{ .originFullName }} {
68+
return map[string]*{{ .originFullName }}{
69+
"empty": &{{ .originFullName }}{},
70+
"fill_test": func() *{{ .originFullName }} {
71+
src := &{{ .originFullName }}{}
72+
FillOrigTest{{ .originName }}(src)
73+
return src
74+
}(), {{ range .fields -}}{{ .GenerateTestValue $.messageStruct }}{{ end }}
75+
}
6776
}

internal/cmd/pdatagen/internal/typed_field.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,8 @@ func (ptf *TypedField) GenerateSetWithTestValue(ms *messageStruct) string {
7474
return executeTemplate(t, ptf.templateFields(ms))
7575
}
7676

77+
func (ptf *TypedField) GenerateTestValue(*messageStruct) string { return "" }
78+
7779
func (ptf *TypedField) GenerateCopyOrig(ms *messageStruct) string {
7880
t := template.Must(templateNew("typedCopyOrigTemplate").Parse(typedCopyOrigTemplate))
7981
return executeTemplate(t, ptf.templateFields(ms))

0 commit comments

Comments
 (0)