encoding/textpb: clean up tests on Any
Remove unnecessary v1 wrapping. Change most tests to operate on message
Any directly.
Change-Id: I19bbca6c1af72894f6a292aab8ebd09e0301a260
Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/168517
Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
diff --git a/encoding/textpb/decode_test.go b/encoding/textpb/decode_test.go
index 14b7c7c..b463023 100644
--- a/encoding/textpb/decode_test.go
+++ b/encoding/textpb/decode_test.go
@@ -57,7 +57,7 @@
inputMessage proto.Message
inputText string
wantMessage proto.Message
- wantErr bool
+ wantErr bool // TODO: Verify error message content.
}{{
desc: "proto2 empty message",
inputMessage: &pb2.Scalars{},
@@ -1254,8 +1254,7 @@
inputText: `
[pb2.message_set_extension]: {
opt_string: "another not a messageset extension"
-}
-`,
+}`,
wantMessage: func() proto.Message {
m := &pb2.MessageSet{}
setExtension(m, pb2.E_MessageSetExtension, &pb2.FakeMessageSetExtension{
@@ -1264,59 +1263,41 @@
return m
}(),
}, {
- // TODO: Change these tests to directly use knownpb.Any type instead once
- // type has been regenerated with V2 compiler.
desc: "Any not expanded",
- inputMessage: &pb2.KnownTypes{},
- inputText: `opt_any: {
+ inputMessage: &knownpb.Any{},
+ inputText: `
type_url: "pb2.Nested"
value: "some bytes"
-}
`,
- wantMessage: &pb2.KnownTypes{
- OptAny: &knownpb.Any{
- TypeUrl: "pb2.Nested",
- Value: []byte("some bytes"),
- },
+ wantMessage: &knownpb.Any{
+ TypeUrl: "pb2.Nested",
+ Value: []byte("some bytes"),
},
}, {
desc: "Any not expanded missing value",
- inputMessage: &pb2.KnownTypes{},
- inputText: `opt_any: {
-type_url: "pb2.Nested"
-}
-`,
- wantMessage: &pb2.KnownTypes{
- OptAny: &knownpb.Any{
- TypeUrl: "pb2.Nested",
- },
+ inputMessage: &knownpb.Any{},
+ inputText: `type_url: "pb2.Nested"`,
+ wantMessage: &knownpb.Any{
+ TypeUrl: "pb2.Nested",
},
}, {
desc: "Any not expanded missing type_url",
- inputMessage: &pb2.KnownTypes{},
- inputText: `opt_any: {
-value: "some bytes"
-}
-`,
- wantMessage: &pb2.KnownTypes{
- OptAny: &knownpb.Any{
- Value: []byte("some bytes"),
- },
+ inputMessage: &knownpb.Any{},
+ inputText: `value: "some bytes"`,
+ wantMessage: &knownpb.Any{
+ Value: []byte("some bytes"),
},
}, {
desc: "Any expanded",
- umo: func() textpb.UnmarshalOptions {
- m := &pb2.Nested{}
- resolver := preg.NewTypes(m.ProtoReflect().Type())
- return textpb.UnmarshalOptions{Resolver: resolver}
- }(),
- inputMessage: &pb2.KnownTypes{},
- inputText: `opt_any: {
- [foobar/pb2.Nested]: {
- opt_string: "embedded inside Any"
- opt_nested: {
- opt_string: "inception"
- }
+ umo: textpb.UnmarshalOptions{
+ Resolver: preg.NewTypes((&pb2.Nested{}).ProtoReflect().Type()),
+ },
+ inputMessage: &knownpb.Any{},
+ inputText: `
+[foobar/pb2.Nested]: {
+ opt_string: "embedded inside Any"
+ opt_nested: {
+ opt_string: "inception"
}
}
`,
@@ -1331,110 +1312,82 @@
if err != nil {
t.Fatalf("error in binary marshaling message for Any.value: %v", err)
}
- return &pb2.KnownTypes{
- OptAny: &knownpb.Any{
- TypeUrl: "foobar/pb2.Nested",
- Value: b,
- },
+ return &knownpb.Any{
+ TypeUrl: "foobar/pb2.Nested",
+ Value: b,
}
}(),
}, {
desc: "Any expanded with empty value",
- umo: func() textpb.UnmarshalOptions {
- m := &pb2.Nested{}
- resolver := preg.NewTypes(m.ProtoReflect().Type())
- return textpb.UnmarshalOptions{Resolver: resolver}
- }(),
- inputMessage: &pb2.KnownTypes{},
- inputText: `opt_any: {
-[foo.com/pb2.Nested]: {}
-}
-`,
- wantMessage: &pb2.KnownTypes{
- OptAny: &knownpb.Any{
- TypeUrl: "foo.com/pb2.Nested",
- },
+ umo: textpb.UnmarshalOptions{
+ Resolver: preg.NewTypes((&pb2.Nested{}).ProtoReflect().Type()),
+ },
+ inputMessage: &knownpb.Any{},
+ inputText: `[foo.com/pb2.Nested]: {}`,
+ wantMessage: &knownpb.Any{
+ TypeUrl: "foo.com/pb2.Nested",
},
}, {
desc: "Any expanded with missing required error",
- umo: func() textpb.UnmarshalOptions {
- m := &pb2.PartialRequired{}
- resolver := preg.NewTypes(m.ProtoReflect().Type())
- return textpb.UnmarshalOptions{Resolver: resolver}
- }(),
- inputMessage: &pb2.KnownTypes{},
- inputText: `opt_any: {
- [pb2.PartialRequired]: {
- opt_string: "embedded inside Any"
- }
+ umo: textpb.UnmarshalOptions{
+ Resolver: preg.NewTypes((&pb2.PartialRequired{}).ProtoReflect().Type()),
+ },
+ inputMessage: &knownpb.Any{},
+ inputText: `
+[pb2.PartialRequired]: {
+ opt_string: "embedded inside Any"
}
`,
wantMessage: func() proto.Message {
m := &pb2.PartialRequired{
OptString: scalar.String("embedded inside Any"),
}
- // TODO: Switch to V2 marshal when ready.
- b, err := protoV1.Marshal(m)
- // Ignore required not set error.
- if _, ok := err.(*protoV1.RequiredNotSetError); !ok {
+ b, err := proto.MarshalOptions{Deterministic: true}.Marshal(m)
+ // TODO: Marshal may fail due to required field not set at some
+ // point. Need to ignore required not set error here.
+ if err != nil {
t.Fatalf("error in binary marshaling message for Any.value: %v", err)
}
- return &pb2.KnownTypes{
- OptAny: &knownpb.Any{
- TypeUrl: "pb2.PartialRequired",
- Value: b,
- },
+ return &knownpb.Any{
+ TypeUrl: "pb2.PartialRequired",
+ Value: b,
}
}(),
wantErr: true,
}, {
desc: "Any expanded with unregistered type",
umo: textpb.UnmarshalOptions{Resolver: preg.NewTypes()},
- inputMessage: &pb2.KnownTypes{},
- inputText: `opt_any: {
-[SomeMessage]: {}
-}
-`,
- wantErr: true,
+ inputMessage: &knownpb.Any{},
+ inputText: `[SomeMessage]: {}`,
+ wantErr: true,
}, {
desc: "Any expanded with invalid value",
- umo: func() textpb.UnmarshalOptions {
- m := &pb2.Nested{}
- resolver := preg.NewTypes(m.ProtoReflect().Type())
- return textpb.UnmarshalOptions{Resolver: resolver}
- }(),
- inputMessage: &pb2.KnownTypes{},
- inputText: `opt_any: {
-[pb2.Nested]: 123
-}
-`,
- wantErr: true,
+ umo: textpb.UnmarshalOptions{
+ Resolver: preg.NewTypes((&pb2.Nested{}).ProtoReflect().Type()),
+ },
+ inputMessage: &knownpb.Any{},
+ inputText: `[pb2.Nested]: 123`,
+ wantErr: true,
}, {
desc: "Any expanded with unknown fields",
- umo: func() textpb.UnmarshalOptions {
- m := &pb2.Nested{}
- resolver := preg.NewTypes(m.ProtoReflect().Type())
- return textpb.UnmarshalOptions{Resolver: resolver}
- }(),
- inputMessage: &pb2.KnownTypes{},
- inputText: `opt_any: {
+ umo: textpb.UnmarshalOptions{
+ Resolver: preg.NewTypes((&pb2.Nested{}).ProtoReflect().Type()),
+ },
+ inputMessage: &knownpb.Any{},
+ inputText: `
[pb2.Nested]: {}
unknown: ""
-}
`,
wantErr: true,
}, {
desc: "Any contains expanded and unexpanded fields",
- umo: func() textpb.UnmarshalOptions {
- m := &pb2.Nested{}
- resolver := preg.NewTypes(m.ProtoReflect().Type())
- return textpb.UnmarshalOptions{Resolver: resolver}
- }(),
- inputMessage: &pb2.KnownTypes{},
- inputText: `opt_any: {
+ umo: textpb.UnmarshalOptions{
+ Resolver: preg.NewTypes((&pb2.Nested{}).ProtoReflect().Type()),
+ },
+ inputMessage: &knownpb.Any{},
+ inputText: `
[pb2.Nested]: {}
type_url: "pb2.Nested"
-}
`,
wantErr: true,
}}