proto, internal/protobuild: add test proto template builder
The proto package tests often test several variations of messages with a
similar shape. For example, most tests are performed with a proto2
message with a regular field, a proto2 message with an extension field,
and a proto3 message.
Add a protobuild package which can initialize all these variations from
a single template. For example, these three messages:
&testpb.TestAllTypes{OptionalInt32: proto.Int32(1)}
&test3pb.TestAllTypes{OptionalInt32: 1}
m := &testpb.TestAllExtensions{}
proto.SetExtension(m, &testpb.E_OptionalInt32, 1)
can all be constructed from the template:
protobuild.Message{"optional_int32": 1}
This reduces redundancy in tests and will make it more practical to
test alternative code generators.
Change-Id: I3245a4bf74ee1bce957bc772fed513d427720677
Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/217457
Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
diff --git a/proto/merge_test.go b/proto/merge_test.go
index e59feb9..aa9682c 100644
--- a/proto/merge_test.go
+++ b/proto/merge_test.go
@@ -286,41 +286,41 @@
desc: "merge extension fields",
dst: func() proto.Message {
m := new(testpb.TestAllExtensions)
- proto.SetExtension(m, testpb.E_OptionalInt32Extension, int32(32))
- proto.SetExtension(m, testpb.E_OptionalNestedMessageExtension,
+ proto.SetExtension(m, testpb.E_OptionalInt32, int32(32))
+ proto.SetExtension(m, testpb.E_OptionalNestedMessage,
&testpb.TestAllExtensions_NestedMessage{
A: proto.Int32(50),
},
)
- proto.SetExtension(m, testpb.E_RepeatedFixed32Extension, []uint32{1, 2, 3})
+ proto.SetExtension(m, testpb.E_RepeatedFixed32, []uint32{1, 2, 3})
return m
}(),
src: func() proto.Message {
m2 := new(testpb.TestAllExtensions)
- proto.SetExtension(m2, testpb.E_OptionalInt64Extension, int64(1000))
+ proto.SetExtension(m2, testpb.E_OptionalInt64, int64(1000))
m := new(testpb.TestAllExtensions)
- proto.SetExtension(m, testpb.E_OptionalInt64Extension, int64(64))
- proto.SetExtension(m, testpb.E_OptionalNestedMessageExtension,
+ proto.SetExtension(m, testpb.E_OptionalInt64, int64(64))
+ proto.SetExtension(m, testpb.E_OptionalNestedMessage,
&testpb.TestAllExtensions_NestedMessage{
Corecursive: m2,
},
)
- proto.SetExtension(m, testpb.E_RepeatedFixed32Extension, []uint32{4, 5, 6})
+ proto.SetExtension(m, testpb.E_RepeatedFixed32, []uint32{4, 5, 6})
return m
}(),
want: func() proto.Message {
m2 := new(testpb.TestAllExtensions)
- proto.SetExtension(m2, testpb.E_OptionalInt64Extension, int64(1000))
+ proto.SetExtension(m2, testpb.E_OptionalInt64, int64(1000))
m := new(testpb.TestAllExtensions)
- proto.SetExtension(m, testpb.E_OptionalInt32Extension, int32(32))
- proto.SetExtension(m, testpb.E_OptionalInt64Extension, int64(64))
- proto.SetExtension(m, testpb.E_OptionalNestedMessageExtension,
+ proto.SetExtension(m, testpb.E_OptionalInt32, int32(32))
+ proto.SetExtension(m, testpb.E_OptionalInt64, int64(64))
+ proto.SetExtension(m, testpb.E_OptionalNestedMessage,
&testpb.TestAllExtensions_NestedMessage{
A: proto.Int32(50),
Corecursive: m2,
},
)
- proto.SetExtension(m, testpb.E_RepeatedFixed32Extension, []uint32{1, 2, 3, 4, 5, 6})
+ proto.SetExtension(m, testpb.E_RepeatedFixed32, []uint32{1, 2, 3, 4, 5, 6})
return m
}(),
}, {