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,
 	}}
diff --git a/encoding/textpb/encode_test.go b/encoding/textpb/encode_test.go
index b2fed47..2d7b7de 100644
--- a/encoding/textpb/encode_test.go
+++ b/encoding/textpb/encode_test.go
@@ -10,13 +10,11 @@
 	"strings"
 	"testing"
 
-	protoV1 "github.com/golang/protobuf/proto"
 	"github.com/golang/protobuf/protoapi"
 	"github.com/golang/protobuf/v2/encoding/textpb"
 	"github.com/golang/protobuf/v2/internal/detrand"
 	"github.com/golang/protobuf/v2/internal/encoding/pack"
 	"github.com/golang/protobuf/v2/internal/encoding/wire"
-	"github.com/golang/protobuf/v2/internal/impl"
 	"github.com/golang/protobuf/v2/internal/scalar"
 	"github.com/golang/protobuf/v2/proto"
 	preg "github.com/golang/protobuf/v2/reflect/protoregistry"
@@ -61,10 +59,6 @@
 	knownFields.Set(wire.Number(xd.Field), pval)
 }
 
-func wrapV1Message(any *knownpb.Any) proto.Message {
-	return impl.Export{}.MessageOf(any).Interface()
-}
-
 // dhex decodes a hex-string and returns the bytes and panics if s is invalid.
 func dhex(s string) []byte {
 	b, err := hex.DecodeString(s)
@@ -80,7 +74,7 @@
 		mo      textpb.MarshalOptions
 		input   proto.Message
 		want    string
-		wantErr bool
+		wantErr bool // TODO: Verify error message content.
 	}{{
 		desc:  "proto2 optional scalars not set",
 		input: &pb2.Scalars{},
@@ -1033,10 +1027,10 @@
 			if err != nil {
 				t.Fatalf("error in binary marshaling message for Any.value: %v", err)
 			}
-			return wrapV1Message(&knownpb.Any{
+			return &knownpb.Any{
 				TypeUrl: "pb2.Nested",
 				Value:   b,
-			})
+			}
 		}(),
 		want: `type_url: "pb2.Nested"
 value: "\n\x13embedded inside Any\x12\x0b\n\tinception"
@@ -1057,10 +1051,10 @@
 			if err != nil {
 				t.Fatalf("error in binary marshaling message for Any.value: %v", err)
 			}
-			return wrapV1Message(&knownpb.Any{
+			return &knownpb.Any{
 				TypeUrl: "foo/pb2.Nested",
 				Value:   b,
-			})
+			}
 		}(),
 		want: `[foo/pb2.Nested]: {
   opt_string: "embedded inside Any"
@@ -1078,16 +1072,16 @@
 			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 wrapV1Message(&knownpb.Any{
+			return &knownpb.Any{
 				TypeUrl: string(m.ProtoReflect().Type().FullName()),
 				Value:   b,
-			})
+			}
 		}(),
 		want: `[pb2.PartialRequired]: {
   opt_string: "embedded inside Any"
@@ -1099,10 +1093,10 @@
 		mo: textpb.MarshalOptions{
 			Resolver: preg.NewTypes((&pb2.Nested{}).ProtoReflect().Type()),
 		},
-		input: wrapV1Message(&knownpb.Any{
+		input: &knownpb.Any{
 			TypeUrl: "foo/pb2.Nested",
 			Value:   dhex("80"),
-		}),
+		},
 		want: `type_url: "foo/pb2.Nested"
 value: "\x80"
 `,