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_weak.pb.go b/internal/testprotos/test/test_weak.pb.go
new file mode 100644
index 0000000..2d010a0
--- /dev/null
+++ b/internal/testprotos/test/test_weak.pb.go
@@ -0,0 +1,105 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: test_weak.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 WeakImportMessage struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *WeakImportMessage) ProtoReflect() protoreflect.Message {
+	return xxx_TestWeak_protoFile_messageTypes[0].MessageOf(m)
+}
+func (m *WeakImportMessage) Reset()         { *m = WeakImportMessage{} }
+func (m *WeakImportMessage) String() string { return proto.CompactTextString(m) }
+func (*WeakImportMessage) ProtoMessage()    {}
+func (*WeakImportMessage) Descriptor() ([]byte, []int) {
+	return fileDescriptor_c2b8edfebc4f71b3_gzipped, []int{0}
+}
+
+func (m *WeakImportMessage) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_WeakImportMessage.Unmarshal(m, b)
+}
+func (m *WeakImportMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_WeakImportMessage.Marshal(b, m, deterministic)
+}
+func (m *WeakImportMessage) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_WeakImportMessage.Merge(m, src)
+}
+func (m *WeakImportMessage) XXX_Size() int {
+	return xxx_messageInfo_WeakImportMessage.Size(m)
+}
+func (m *WeakImportMessage) XXX_DiscardUnknown() {
+	xxx_messageInfo_WeakImportMessage.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_WeakImportMessage proto.InternalMessageInfo
+
+func init() {
+	proto.RegisterFile("test_weak.proto", fileDescriptor_c2b8edfebc4f71b3_gzipped)
+	proto.RegisterType((*WeakImportMessage)(nil), "goproto.proto.test.WeakImportMessage")
+}
+
+var fileDescriptor_c2b8edfebc4f71b3 = []byte{
+	// 116 bytes of the wire-encoded FileDescriptorProto
+	0x0a, 0x0f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x77, 0x65, 0x61, 0x6b, 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, 0x13, 0x0a, 0x11, 0x57, 0x65, 0x61, 0x6b, 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_c2b8edfebc4f71b3_gzipped = func() []byte {
+	bb := new(bytes.Buffer)
+	zw, _ := gzip.NewWriterLevel(bb, gzip.NoCompression)
+	zw.Write(fileDescriptor_c2b8edfebc4f71b3)
+	zw.Close()
+	return bb.Bytes()
+}()
+
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
+var TestWeak_protoFile protoreflect.FileDescriptor
+
+var xxx_TestWeak_protoFile_messageTypes [1]protoimpl.MessageType
+var xxx_TestWeak_protoFile_goTypes = []interface{}{
+	(*WeakImportMessage)(nil), // 0: goproto.proto.test.WeakImportMessage
+}
+var xxx_TestWeak_protoFile_depIdxs = []int32{}
+
+func init() {
+	var messageTypes [1]protoreflect.MessageType
+	TestWeak_protoFile = protoimpl.FileBuilder{
+		RawDescriptor:      fileDescriptor_c2b8edfebc4f71b3,
+		GoTypes:            xxx_TestWeak_protoFile_goTypes,
+		DependencyIndexes:  xxx_TestWeak_protoFile_depIdxs,
+		MessageOutputTypes: messageTypes[:],
+	}.Init()
+	messageGoTypes := xxx_TestWeak_protoFile_goTypes[0:][:1]
+	for i, mt := range messageTypes[:] {
+		xxx_TestWeak_protoFile_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
+		xxx_TestWeak_protoFile_messageTypes[i].PBType = mt
+	}
+	xxx_TestWeak_protoFile_goTypes = nil
+	xxx_TestWeak_protoFile_depIdxs = nil
+}