internal/fileinit: add tests for fileinit and protodesc

Test the fileinit and protodesc packages by verifying that passing a
FileDescriptorProto through a round trip of these packages leaves it
unchanged.

Change-Id: I6bfb894d95f1736f9908adee1ab63e9653b3f1be
Reviewed-on: https://go-review.googlesource.com/c/159762
Reviewed-by: Herbie Ong <herbie@google.com>
diff --git a/internal/testprotos/test/test_public.pb.go b/internal/testprotos/test/test_public.pb.go
new file mode 100644
index 0000000..b316027
--- /dev/null
+++ b/internal/testprotos/test/test_public.pb.go
@@ -0,0 +1,105 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: test_public.proto
+
+package test
+
+import (
+	bytes "bytes"
+	gzip "compress/gzip"
+	proto "github.com/golang/protobuf/proto"
+	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
+	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
+	reflect "reflect"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+
+type PublicImportMessage struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *PublicImportMessage) ProtoReflect() protoreflect.Message {
+	return xxx_TestPublic_protoFile_messageTypes[0].MessageOf(m)
+}
+func (m *PublicImportMessage) Reset()         { *m = PublicImportMessage{} }
+func (m *PublicImportMessage) String() string { return proto.CompactTextString(m) }
+func (*PublicImportMessage) ProtoMessage()    {}
+func (*PublicImportMessage) Descriptor() ([]byte, []int) {
+	return fileDescriptor_36dd44afd5b47374_gzipped, []int{0}
+}
+
+func (m *PublicImportMessage) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_PublicImportMessage.Unmarshal(m, b)
+}
+func (m *PublicImportMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_PublicImportMessage.Marshal(b, m, deterministic)
+}
+func (m *PublicImportMessage) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_PublicImportMessage.Merge(m, src)
+}
+func (m *PublicImportMessage) XXX_Size() int {
+	return xxx_messageInfo_PublicImportMessage.Size(m)
+}
+func (m *PublicImportMessage) XXX_DiscardUnknown() {
+	xxx_messageInfo_PublicImportMessage.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_PublicImportMessage proto.InternalMessageInfo
+
+func init() {
+	proto.RegisterFile("test_public.proto", fileDescriptor_36dd44afd5b47374_gzipped)
+	proto.RegisterType((*PublicImportMessage)(nil), "goproto.proto.test.PublicImportMessage")
+}
+
+var fileDescriptor_36dd44afd5b47374 = []byte{
+	// 120 bytes of the wire-encoded FileDescriptorProto
+	0x0a, 0x11, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x12, 0x12, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x22, 0x15, 0x0a, 0x13, 0x50, 0x75, 0x62, 0x6c, 0x69,
+	0x63, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x38,
+	0x5a, 0x36, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x6c,
+	0x61, 0x6e, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x76, 0x32, 0x2f,
+	0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74,
+}
+
+var fileDescriptor_36dd44afd5b47374_gzipped = func() []byte {
+	bb := new(bytes.Buffer)
+	zw, _ := gzip.NewWriterLevel(bb, gzip.NoCompression)
+	zw.Write(fileDescriptor_36dd44afd5b47374)
+	zw.Close()
+	return bb.Bytes()
+}()
+
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
+var TestPublic_protoFile protoreflect.FileDescriptor
+
+var xxx_TestPublic_protoFile_messageTypes [1]protoimpl.MessageType
+var xxx_TestPublic_protoFile_goTypes = []interface{}{
+	(*PublicImportMessage)(nil), // 0: goproto.proto.test.PublicImportMessage
+}
+var xxx_TestPublic_protoFile_depIdxs = []int32{}
+
+func init() {
+	var messageTypes [1]protoreflect.MessageType
+	TestPublic_protoFile = protoimpl.FileBuilder{
+		RawDescriptor:      fileDescriptor_36dd44afd5b47374,
+		GoTypes:            xxx_TestPublic_protoFile_goTypes,
+		DependencyIndexes:  xxx_TestPublic_protoFile_depIdxs,
+		MessageOutputTypes: messageTypes[:],
+	}.Init()
+	messageGoTypes := xxx_TestPublic_protoFile_goTypes[0:][:1]
+	for i, mt := range messageTypes[:] {
+		xxx_TestPublic_protoFile_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
+		xxx_TestPublic_protoFile_messageTypes[i].PBType = mt
+	}
+	xxx_TestPublic_protoFile_goTypes = nil
+	xxx_TestPublic_protoFile_depIdxs = nil
+}