internal/impl: fix validation of required group fields
Change-Id: I3c3b5cfbea599dc08096aa5992b7829c2e50f25d
Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/218578
Reviewed-by: Joe Tsai <joetsai@google.com>
diff --git a/proto/testmessages_test.go b/proto/testmessages_test.go
index 7a2eaad..a1c1d1e 100644
--- a/proto/testmessages_test.go
+++ b/proto/testmessages_test.go
@@ -1007,6 +1007,39 @@
}.Marshal(),
},
{
+ desc: "required message unset",
+ checkFastInit: true,
+ partial: true,
+ decodeTo: makeMessages(protobuild.Message{}, &requiredpb.Message{}),
+ },
+ {
+ desc: "required message set",
+ checkFastInit: true,
+ decodeTo: makeMessages(protobuild.Message{
+ "v": protobuild.Message{},
+ }, &requiredpb.Message{}),
+ wire: pack.Message{
+ pack.Tag{1, pack.BytesType}, pack.LengthPrefix(pack.Message{}),
+ }.Marshal(),
+ },
+ {
+ desc: "required group unset",
+ checkFastInit: true,
+ partial: true,
+ decodeTo: makeMessages(protobuild.Message{}, &requiredpb.Group{}),
+ },
+ {
+ desc: "required group set",
+ checkFastInit: true,
+ decodeTo: makeMessages(protobuild.Message{
+ "group": protobuild.Message{},
+ }, &requiredpb.Group{}),
+ wire: pack.Message{
+ pack.Tag{1, pack.StartGroupType},
+ pack.Tag{1, pack.EndGroupType},
+ }.Marshal(),
+ },
+ {
desc: "required field with incompatible wire type",
checkFastInit: true,
partial: true,