blob: 1a8df960adb9eb865850f947df5fb20d0291f192 [file] [log] [blame]
Joe Tsai08e00302018-11-26 22:32:06 -08001// Copyright 2018 The Go Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
Joe Tsai35ec98f2019-03-25 14:41:32 -07005package legacy_test
Joe Tsai08e00302018-11-26 22:32:06 -08006
7import (
8 "reflect"
9 "testing"
10
Joe Tsai35ec98f2019-03-25 14:41:32 -070011 legacy "github.com/golang/protobuf/v2/internal/legacy"
Joe Tsai08e00302018-11-26 22:32:06 -080012 pragma "github.com/golang/protobuf/v2/internal/pragma"
Joe Tsaie1f8d502018-11-26 18:55:29 -080013 pdesc "github.com/golang/protobuf/v2/reflect/protodesc"
Joe Tsai08e00302018-11-26 22:32:06 -080014 pref "github.com/golang/protobuf/v2/reflect/protoreflect"
Joe Tsai08e00302018-11-26 22:32:06 -080015 cmp "github.com/google/go-cmp/cmp"
16
17 proto2_20160225 "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto2.v0.0.0-20160225-2fc053c5"
18 proto2_20160519 "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto2.v0.0.0-20160519-a4ab9ec5"
19 proto2_20180125 "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto2.v1.0.0-20180125-92554152"
20 proto2_20180430 "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto2.v1.1.0-20180430-b4deda09"
21 proto2_20180814 "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto2.v1.2.0-20180814-aa810b61"
22 proto2_20181126 "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto2.v1.2.1-20181126-8d0c54c1"
23 proto3_20160225 "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto3.v0.0.0-20160225-2fc053c5"
24 proto3_20160519 "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto3.v0.0.0-20160519-a4ab9ec5"
25 proto3_20180125 "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto3.v1.0.0-20180125-92554152"
26 proto3_20180430 "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto3.v1.1.0-20180430-b4deda09"
27 proto3_20180814 "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto3.v1.2.0-20180814-aa810b61"
28 proto3_20181126 "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto3.v1.2.1-20181126-8d0c54c1"
29)
30
31func mustLoadFileDesc(b []byte, _ []int) pref.FileDescriptor {
Joe Tsai35ec98f2019-03-25 14:41:32 -070032 fd, err := pdesc.NewFile(legacy.LoadFileDesc(b), nil)
Joe Tsai08e00302018-11-26 22:32:06 -080033 if err != nil {
34 panic(err)
35 }
36 return fd
37}
38
39func TestDescriptor(t *testing.T) {
40 var tests []struct{ got, want pref.Descriptor }
41
42 fileDescP2_20160225 := mustLoadFileDesc(new(proto2_20160225.Message).Descriptor())
43 tests = append(tests, []struct{ got, want pref.Descriptor }{{
Joe Tsai35ec98f2019-03-25 14:41:32 -070044 got: legacy.LoadEnumDesc(reflect.TypeOf(proto2_20160225.SiblingEnum(0))),
Joe Tsai08e00302018-11-26 22:32:06 -080045 want: fileDescP2_20160225.Enums().ByName("SiblingEnum"),
46 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -070047 got: legacy.LoadEnumDesc(reflect.TypeOf(proto2_20160225.Message_ChildEnum(0))),
Joe Tsai08e00302018-11-26 22:32:06 -080048 want: fileDescP2_20160225.Messages().ByName("Message").Enums().ByName("ChildEnum"),
49 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -070050 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20160225.SiblingMessage))),
Joe Tsai08e00302018-11-26 22:32:06 -080051 want: fileDescP2_20160225.Messages().ByName("SiblingMessage"),
52 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -070053 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20160225.Message_ChildMessage))),
Joe Tsai08e00302018-11-26 22:32:06 -080054 want: fileDescP2_20160225.Messages().ByName("Message").Messages().ByName("ChildMessage"),
55 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -070056 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20160225.Message))),
Joe Tsai08e00302018-11-26 22:32:06 -080057 want: fileDescP2_20160225.Messages().ByName("Message"),
58 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -070059 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20160225.Message_NamedGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -080060 want: fileDescP2_20160225.Messages().ByName("Message").Messages().ByName("NamedGroup"),
61 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -070062 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20160225.Message_OptionalGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -080063 want: fileDescP2_20160225.Messages().ByName("Message").Messages().ByName("OptionalGroup"),
64 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -070065 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20160225.Message_RequiredGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -080066 want: fileDescP2_20160225.Messages().ByName("Message").Messages().ByName("RequiredGroup"),
67 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -070068 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20160225.Message_RepeatedGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -080069 want: fileDescP2_20160225.Messages().ByName("Message").Messages().ByName("RepeatedGroup"),
70 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -070071 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20160225.Message_OneofGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -080072 want: fileDescP2_20160225.Messages().ByName("Message").Messages().ByName("OneofGroup"),
73 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -070074 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20160225.Message_ExtensionOptionalGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -080075 want: fileDescP2_20160225.Messages().ByName("Message").Messages().ByName("ExtensionOptionalGroup"),
76 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -070077 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20160225.Message_ExtensionRepeatedGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -080078 want: fileDescP2_20160225.Messages().ByName("Message").Messages().ByName("ExtensionRepeatedGroup"),
79 }}...)
80
81 fileDescP3_20160225 := mustLoadFileDesc(new(proto3_20160225.Message).Descriptor())
82 tests = append(tests, []struct{ got, want pref.Descriptor }{{
Joe Tsai35ec98f2019-03-25 14:41:32 -070083 got: legacy.LoadEnumDesc(reflect.TypeOf(proto3_20160225.SiblingEnum(0))),
Joe Tsai08e00302018-11-26 22:32:06 -080084 want: fileDescP3_20160225.Enums().ByName("SiblingEnum"),
85 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -070086 got: legacy.LoadEnumDesc(reflect.TypeOf(proto3_20160225.Message_ChildEnum(0))),
Joe Tsai08e00302018-11-26 22:32:06 -080087 want: fileDescP3_20160225.Messages().ByName("Message").Enums().ByName("ChildEnum"),
88 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -070089 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto3_20160225.SiblingMessage))),
Joe Tsai08e00302018-11-26 22:32:06 -080090 want: fileDescP3_20160225.Messages().ByName("SiblingMessage"),
91 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -070092 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto3_20160225.Message_ChildMessage))),
Joe Tsai08e00302018-11-26 22:32:06 -080093 want: fileDescP3_20160225.Messages().ByName("Message").Messages().ByName("ChildMessage"),
94 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -070095 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto3_20160225.Message))),
Joe Tsai08e00302018-11-26 22:32:06 -080096 want: fileDescP3_20160225.Messages().ByName("Message"),
97 }}...)
98
99 fileDescP2_20160519 := mustLoadFileDesc(new(proto2_20160519.Message).Descriptor())
100 tests = append(tests, []struct{ got, want pref.Descriptor }{{
Joe Tsai35ec98f2019-03-25 14:41:32 -0700101 got: legacy.LoadEnumDesc(reflect.TypeOf(proto2_20160519.SiblingEnum(0))),
Joe Tsai08e00302018-11-26 22:32:06 -0800102 want: fileDescP2_20160519.Enums().ByName("SiblingEnum"),
103 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700104 got: legacy.LoadEnumDesc(reflect.TypeOf(proto2_20160519.Message_ChildEnum(0))),
Joe Tsai08e00302018-11-26 22:32:06 -0800105 want: fileDescP2_20160519.Messages().ByName("Message").Enums().ByName("ChildEnum"),
106 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700107 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20160519.SiblingMessage))),
Joe Tsai08e00302018-11-26 22:32:06 -0800108 want: fileDescP2_20160519.Messages().ByName("SiblingMessage"),
109 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700110 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20160519.Message_ChildMessage))),
Joe Tsai08e00302018-11-26 22:32:06 -0800111 want: fileDescP2_20160519.Messages().ByName("Message").Messages().ByName("ChildMessage"),
112 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700113 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20160519.Message))),
Joe Tsai08e00302018-11-26 22:32:06 -0800114 want: fileDescP2_20160519.Messages().ByName("Message"),
115 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700116 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20160519.Message_NamedGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800117 want: fileDescP2_20160519.Messages().ByName("Message").Messages().ByName("NamedGroup"),
118 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700119 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20160519.Message_OptionalGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800120 want: fileDescP2_20160519.Messages().ByName("Message").Messages().ByName("OptionalGroup"),
121 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700122 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20160519.Message_RequiredGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800123 want: fileDescP2_20160519.Messages().ByName("Message").Messages().ByName("RequiredGroup"),
124 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700125 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20160519.Message_RepeatedGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800126 want: fileDescP2_20160519.Messages().ByName("Message").Messages().ByName("RepeatedGroup"),
127 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700128 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20160519.Message_OneofGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800129 want: fileDescP2_20160519.Messages().ByName("Message").Messages().ByName("OneofGroup"),
130 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700131 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20160519.Message_ExtensionOptionalGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800132 want: fileDescP2_20160519.Messages().ByName("Message").Messages().ByName("ExtensionOptionalGroup"),
133 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700134 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20160519.Message_ExtensionRepeatedGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800135 want: fileDescP2_20160519.Messages().ByName("Message").Messages().ByName("ExtensionRepeatedGroup"),
136 }}...)
137
138 fileDescP3_20160519 := mustLoadFileDesc(new(proto3_20160519.Message).Descriptor())
139 tests = append(tests, []struct{ got, want pref.Descriptor }{{
Joe Tsai35ec98f2019-03-25 14:41:32 -0700140 got: legacy.LoadEnumDesc(reflect.TypeOf(proto3_20160519.SiblingEnum(0))),
Joe Tsai08e00302018-11-26 22:32:06 -0800141 want: fileDescP3_20160519.Enums().ByName("SiblingEnum"),
142 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700143 got: legacy.LoadEnumDesc(reflect.TypeOf(proto3_20160519.Message_ChildEnum(0))),
Joe Tsai08e00302018-11-26 22:32:06 -0800144 want: fileDescP3_20160519.Messages().ByName("Message").Enums().ByName("ChildEnum"),
145 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700146 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto3_20160519.SiblingMessage))),
Joe Tsai08e00302018-11-26 22:32:06 -0800147 want: fileDescP3_20160519.Messages().ByName("SiblingMessage"),
148 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700149 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto3_20160519.Message_ChildMessage))),
Joe Tsai08e00302018-11-26 22:32:06 -0800150 want: fileDescP3_20160519.Messages().ByName("Message").Messages().ByName("ChildMessage"),
151 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700152 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto3_20160519.Message))),
Joe Tsai08e00302018-11-26 22:32:06 -0800153 want: fileDescP3_20160519.Messages().ByName("Message"),
154 }}...)
155
156 fileDescP2_20180125 := mustLoadFileDesc(new(proto2_20180125.Message).Descriptor())
157 tests = append(tests, []struct{ got, want pref.Descriptor }{{
Joe Tsai35ec98f2019-03-25 14:41:32 -0700158 got: legacy.LoadEnumDesc(reflect.TypeOf(proto2_20180125.SiblingEnum(0))),
Joe Tsai08e00302018-11-26 22:32:06 -0800159 want: fileDescP2_20180125.Enums().ByName("SiblingEnum"),
160 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700161 got: legacy.LoadEnumDesc(reflect.TypeOf(proto2_20180125.Message_ChildEnum(0))),
Joe Tsai08e00302018-11-26 22:32:06 -0800162 want: fileDescP2_20180125.Messages().ByName("Message").Enums().ByName("ChildEnum"),
163 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700164 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20180125.SiblingMessage))),
Joe Tsai08e00302018-11-26 22:32:06 -0800165 want: fileDescP2_20180125.Messages().ByName("SiblingMessage"),
166 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700167 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20180125.Message_ChildMessage))),
Joe Tsai08e00302018-11-26 22:32:06 -0800168 want: fileDescP2_20180125.Messages().ByName("Message").Messages().ByName("ChildMessage"),
169 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700170 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20180125.Message))),
Joe Tsai08e00302018-11-26 22:32:06 -0800171 want: fileDescP2_20180125.Messages().ByName("Message"),
172 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700173 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20180125.Message_NamedGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800174 want: fileDescP2_20180125.Messages().ByName("Message").Messages().ByName("NamedGroup"),
175 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700176 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20180125.Message_OptionalGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800177 want: fileDescP2_20180125.Messages().ByName("Message").Messages().ByName("OptionalGroup"),
178 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700179 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20180125.Message_RequiredGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800180 want: fileDescP2_20180125.Messages().ByName("Message").Messages().ByName("RequiredGroup"),
181 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700182 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20180125.Message_RepeatedGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800183 want: fileDescP2_20180125.Messages().ByName("Message").Messages().ByName("RepeatedGroup"),
184 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700185 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20180125.Message_OneofGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800186 want: fileDescP2_20180125.Messages().ByName("Message").Messages().ByName("OneofGroup"),
187 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700188 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20180125.Message_ExtensionOptionalGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800189 want: fileDescP2_20180125.Messages().ByName("Message").Messages().ByName("ExtensionOptionalGroup"),
190 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700191 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20180125.Message_ExtensionRepeatedGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800192 want: fileDescP2_20180125.Messages().ByName("Message").Messages().ByName("ExtensionRepeatedGroup"),
193 }}...)
194
195 fileDescP3_20180125 := mustLoadFileDesc(new(proto3_20180125.Message).Descriptor())
196 tests = append(tests, []struct{ got, want pref.Descriptor }{{
Joe Tsai35ec98f2019-03-25 14:41:32 -0700197 got: legacy.LoadEnumDesc(reflect.TypeOf(proto3_20180125.SiblingEnum(0))),
Joe Tsai08e00302018-11-26 22:32:06 -0800198 want: fileDescP3_20180125.Enums().ByName("SiblingEnum"),
199 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700200 got: legacy.LoadEnumDesc(reflect.TypeOf(proto3_20180125.Message_ChildEnum(0))),
Joe Tsai08e00302018-11-26 22:32:06 -0800201 want: fileDescP3_20180125.Messages().ByName("Message").Enums().ByName("ChildEnum"),
202 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700203 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto3_20180125.SiblingMessage))),
Joe Tsai08e00302018-11-26 22:32:06 -0800204 want: fileDescP3_20180125.Messages().ByName("SiblingMessage"),
205 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700206 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto3_20180125.Message_ChildMessage))),
Joe Tsai08e00302018-11-26 22:32:06 -0800207 want: fileDescP3_20180125.Messages().ByName("Message").Messages().ByName("ChildMessage"),
208 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700209 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto3_20180125.Message))),
Joe Tsai08e00302018-11-26 22:32:06 -0800210 want: fileDescP3_20180125.Messages().ByName("Message"),
211 }}...)
212
213 fileDescP2_20180430 := mustLoadFileDesc(new(proto2_20180430.Message).Descriptor())
214 tests = append(tests, []struct{ got, want pref.Descriptor }{{
Joe Tsai35ec98f2019-03-25 14:41:32 -0700215 got: legacy.LoadEnumDesc(reflect.TypeOf(proto2_20180430.SiblingEnum(0))),
Joe Tsai08e00302018-11-26 22:32:06 -0800216 want: fileDescP2_20180430.Enums().ByName("SiblingEnum"),
217 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700218 got: legacy.LoadEnumDesc(reflect.TypeOf(proto2_20180430.Message_ChildEnum(0))),
Joe Tsai08e00302018-11-26 22:32:06 -0800219 want: fileDescP2_20180430.Messages().ByName("Message").Enums().ByName("ChildEnum"),
220 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700221 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20180430.SiblingMessage))),
Joe Tsai08e00302018-11-26 22:32:06 -0800222 want: fileDescP2_20180430.Messages().ByName("SiblingMessage"),
223 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700224 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20180430.Message_ChildMessage))),
Joe Tsai08e00302018-11-26 22:32:06 -0800225 want: fileDescP2_20180430.Messages().ByName("Message").Messages().ByName("ChildMessage"),
226 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700227 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20180430.Message))),
Joe Tsai08e00302018-11-26 22:32:06 -0800228 want: fileDescP2_20180430.Messages().ByName("Message"),
229 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700230 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20180430.Message_NamedGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800231 want: fileDescP2_20180430.Messages().ByName("Message").Messages().ByName("NamedGroup"),
232 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700233 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20180430.Message_OptionalGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800234 want: fileDescP2_20180430.Messages().ByName("Message").Messages().ByName("OptionalGroup"),
235 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700236 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20180430.Message_RequiredGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800237 want: fileDescP2_20180430.Messages().ByName("Message").Messages().ByName("RequiredGroup"),
238 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700239 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20180430.Message_RepeatedGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800240 want: fileDescP2_20180430.Messages().ByName("Message").Messages().ByName("RepeatedGroup"),
241 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700242 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20180430.Message_OneofGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800243 want: fileDescP2_20180430.Messages().ByName("Message").Messages().ByName("OneofGroup"),
244 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700245 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20180430.Message_ExtensionOptionalGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800246 want: fileDescP2_20180430.Messages().ByName("Message").Messages().ByName("ExtensionOptionalGroup"),
247 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700248 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20180430.Message_ExtensionRepeatedGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800249 want: fileDescP2_20180430.Messages().ByName("Message").Messages().ByName("ExtensionRepeatedGroup"),
250 }}...)
251
252 fileDescP3_20180430 := mustLoadFileDesc(new(proto3_20180430.Message).Descriptor())
253 tests = append(tests, []struct{ got, want pref.Descriptor }{{
Joe Tsai35ec98f2019-03-25 14:41:32 -0700254 got: legacy.LoadEnumDesc(reflect.TypeOf(proto3_20180430.SiblingEnum(0))),
Joe Tsai08e00302018-11-26 22:32:06 -0800255 want: fileDescP3_20180430.Enums().ByName("SiblingEnum"),
256 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700257 got: legacy.LoadEnumDesc(reflect.TypeOf(proto3_20180430.Message_ChildEnum(0))),
Joe Tsai08e00302018-11-26 22:32:06 -0800258 want: fileDescP3_20180430.Messages().ByName("Message").Enums().ByName("ChildEnum"),
259 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700260 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto3_20180430.SiblingMessage))),
Joe Tsai08e00302018-11-26 22:32:06 -0800261 want: fileDescP3_20180430.Messages().ByName("SiblingMessage"),
262 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700263 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto3_20180430.Message_ChildMessage))),
Joe Tsai08e00302018-11-26 22:32:06 -0800264 want: fileDescP3_20180430.Messages().ByName("Message").Messages().ByName("ChildMessage"),
265 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700266 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto3_20180430.Message))),
Joe Tsai08e00302018-11-26 22:32:06 -0800267 want: fileDescP3_20180430.Messages().ByName("Message"),
268 }}...)
269
270 fileDescP2_20180814 := mustLoadFileDesc(new(proto2_20180814.Message).Descriptor())
271 tests = append(tests, []struct{ got, want pref.Descriptor }{{
Joe Tsai35ec98f2019-03-25 14:41:32 -0700272 got: legacy.LoadEnumDesc(reflect.TypeOf(proto2_20180814.SiblingEnum(0))),
Joe Tsai08e00302018-11-26 22:32:06 -0800273 want: fileDescP2_20180814.Enums().ByName("SiblingEnum"),
274 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700275 got: legacy.LoadEnumDesc(reflect.TypeOf(proto2_20180814.Message_ChildEnum(0))),
Joe Tsai08e00302018-11-26 22:32:06 -0800276 want: fileDescP2_20180814.Messages().ByName("Message").Enums().ByName("ChildEnum"),
277 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700278 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20180814.SiblingMessage))),
Joe Tsai08e00302018-11-26 22:32:06 -0800279 want: fileDescP2_20180814.Messages().ByName("SiblingMessage"),
280 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700281 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20180814.Message_ChildMessage))),
Joe Tsai08e00302018-11-26 22:32:06 -0800282 want: fileDescP2_20180814.Messages().ByName("Message").Messages().ByName("ChildMessage"),
283 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700284 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20180814.Message))),
Joe Tsai08e00302018-11-26 22:32:06 -0800285 want: fileDescP2_20180814.Messages().ByName("Message"),
286 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700287 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20180814.Message_NamedGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800288 want: fileDescP2_20180814.Messages().ByName("Message").Messages().ByName("NamedGroup"),
289 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700290 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20180814.Message_OptionalGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800291 want: fileDescP2_20180814.Messages().ByName("Message").Messages().ByName("OptionalGroup"),
292 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700293 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20180814.Message_RequiredGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800294 want: fileDescP2_20180814.Messages().ByName("Message").Messages().ByName("RequiredGroup"),
295 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700296 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20180814.Message_RepeatedGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800297 want: fileDescP2_20180814.Messages().ByName("Message").Messages().ByName("RepeatedGroup"),
298 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700299 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20180814.Message_OneofGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800300 want: fileDescP2_20180814.Messages().ByName("Message").Messages().ByName("OneofGroup"),
301 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700302 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20180814.Message_ExtensionOptionalGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800303 want: fileDescP2_20180814.Messages().ByName("Message").Messages().ByName("ExtensionOptionalGroup"),
304 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700305 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20180814.Message_ExtensionRepeatedGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800306 want: fileDescP2_20180814.Messages().ByName("Message").Messages().ByName("ExtensionRepeatedGroup"),
307 }}...)
308
309 fileDescP3_20180814 := mustLoadFileDesc(new(proto3_20180814.Message).Descriptor())
310 tests = append(tests, []struct{ got, want pref.Descriptor }{{
Joe Tsai35ec98f2019-03-25 14:41:32 -0700311 got: legacy.LoadEnumDesc(reflect.TypeOf(proto3_20180814.SiblingEnum(0))),
Joe Tsai08e00302018-11-26 22:32:06 -0800312 want: fileDescP3_20180814.Enums().ByName("SiblingEnum"),
313 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700314 got: legacy.LoadEnumDesc(reflect.TypeOf(proto3_20180814.Message_ChildEnum(0))),
Joe Tsai08e00302018-11-26 22:32:06 -0800315 want: fileDescP3_20180814.Messages().ByName("Message").Enums().ByName("ChildEnum"),
316 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700317 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto3_20180814.SiblingMessage))),
Joe Tsai08e00302018-11-26 22:32:06 -0800318 want: fileDescP3_20180814.Messages().ByName("SiblingMessage"),
319 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700320 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto3_20180814.Message_ChildMessage))),
Joe Tsai08e00302018-11-26 22:32:06 -0800321 want: fileDescP3_20180814.Messages().ByName("Message").Messages().ByName("ChildMessage"),
322 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700323 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto3_20180814.Message))),
Joe Tsai08e00302018-11-26 22:32:06 -0800324 want: fileDescP3_20180814.Messages().ByName("Message"),
325 }}...)
326
327 fileDescP2_20181126 := mustLoadFileDesc(new(proto2_20181126.Message).Descriptor())
328 tests = append(tests, []struct{ got, want pref.Descriptor }{{
Joe Tsai35ec98f2019-03-25 14:41:32 -0700329 got: legacy.LoadEnumDesc(reflect.TypeOf(proto2_20181126.SiblingEnum(0))),
Joe Tsai08e00302018-11-26 22:32:06 -0800330 want: fileDescP2_20181126.Enums().ByName("SiblingEnum"),
331 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700332 got: legacy.LoadEnumDesc(reflect.TypeOf(proto2_20181126.Message_ChildEnum(0))),
Joe Tsai08e00302018-11-26 22:32:06 -0800333 want: fileDescP2_20181126.Messages().ByName("Message").Enums().ByName("ChildEnum"),
334 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700335 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20181126.SiblingMessage))),
Joe Tsai08e00302018-11-26 22:32:06 -0800336 want: fileDescP2_20181126.Messages().ByName("SiblingMessage"),
337 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700338 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20181126.Message_ChildMessage))),
Joe Tsai08e00302018-11-26 22:32:06 -0800339 want: fileDescP2_20181126.Messages().ByName("Message").Messages().ByName("ChildMessage"),
340 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700341 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20181126.Message))),
Joe Tsai08e00302018-11-26 22:32:06 -0800342 want: fileDescP2_20181126.Messages().ByName("Message"),
343 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700344 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20181126.Message_NamedGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800345 want: fileDescP2_20181126.Messages().ByName("Message").Messages().ByName("NamedGroup"),
346 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700347 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20181126.Message_OptionalGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800348 want: fileDescP2_20181126.Messages().ByName("Message").Messages().ByName("OptionalGroup"),
349 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700350 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20181126.Message_RequiredGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800351 want: fileDescP2_20181126.Messages().ByName("Message").Messages().ByName("RequiredGroup"),
352 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700353 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20181126.Message_RepeatedGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800354 want: fileDescP2_20181126.Messages().ByName("Message").Messages().ByName("RepeatedGroup"),
355 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700356 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20181126.Message_OneofGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800357 want: fileDescP2_20181126.Messages().ByName("Message").Messages().ByName("OneofGroup"),
358 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700359 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20181126.Message_ExtensionOptionalGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800360 want: fileDescP2_20181126.Messages().ByName("Message").Messages().ByName("ExtensionOptionalGroup"),
361 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700362 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto2_20181126.Message_ExtensionRepeatedGroup))),
Joe Tsai08e00302018-11-26 22:32:06 -0800363 want: fileDescP2_20181126.Messages().ByName("Message").Messages().ByName("ExtensionRepeatedGroup"),
364 }}...)
365
366 fileDescP3_20181126 := mustLoadFileDesc(new(proto3_20181126.Message).Descriptor())
367 tests = append(tests, []struct{ got, want pref.Descriptor }{{
Joe Tsai35ec98f2019-03-25 14:41:32 -0700368 got: legacy.LoadEnumDesc(reflect.TypeOf(proto3_20181126.SiblingEnum(0))),
Joe Tsai08e00302018-11-26 22:32:06 -0800369 want: fileDescP3_20181126.Enums().ByName("SiblingEnum"),
370 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700371 got: legacy.LoadEnumDesc(reflect.TypeOf(proto3_20181126.Message_ChildEnum(0))),
Joe Tsai08e00302018-11-26 22:32:06 -0800372 want: fileDescP3_20181126.Messages().ByName("Message").Enums().ByName("ChildEnum"),
373 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700374 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto3_20181126.SiblingMessage))),
Joe Tsai08e00302018-11-26 22:32:06 -0800375 want: fileDescP3_20181126.Messages().ByName("SiblingMessage"),
376 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700377 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto3_20181126.Message_ChildMessage))),
Joe Tsai08e00302018-11-26 22:32:06 -0800378 want: fileDescP3_20181126.Messages().ByName("Message").Messages().ByName("ChildMessage"),
379 }, {
Joe Tsai35ec98f2019-03-25 14:41:32 -0700380 got: legacy.LoadMessageDesc(reflect.TypeOf(new(proto3_20181126.Message))),
Joe Tsai08e00302018-11-26 22:32:06 -0800381 want: fileDescP3_20181126.Messages().ByName("Message"),
382 }}...)
383
384 // TODO: We need a test package to compare descriptors.
385 type list interface {
386 Len() int
387 pragma.DoNotImplement
388 }
389 opts := cmp.Options{
390 cmp.Transformer("", func(x list) []interface{} {
391 out := make([]interface{}, x.Len())
392 v := reflect.ValueOf(x)
393 for i := 0; i < x.Len(); i++ {
394 m := v.MethodByName("Get")
395 out[i] = m.Call([]reflect.Value{reflect.ValueOf(i)})[0].Interface()
396 }
397 return out
398 }),
399 cmp.Transformer("", func(x pref.Descriptor) map[string]interface{} {
400 out := make(map[string]interface{})
401 v := reflect.ValueOf(x)
402 for i := 0; i < v.NumMethod(); i++ {
403 name := v.Type().Method(i).Name
404 if m := v.Method(i); m.Type().NumIn() == 0 && m.Type().NumOut() == 1 {
405 switch name {
406 case "Index":
407 // Ignore index since legacy descriptors have no parent.
408 case "Options":
409 // Ignore descriptor options since protos are not cmperable.
410 case "Enums", "Messages", "Extensions":
411 // Ignore nested message and enum declarations since
412 // legacy descriptors are all created standalone.
Joe Tsaibce82b82018-12-06 09:39:03 -0800413 case "HasJSONName":
414 // Ignore this since the semantics of the field has
415 // changed across protoc and protoc-gen-go releases.
Joe Tsai08e00302018-11-26 22:32:06 -0800416 case "OneofType", "ExtendedType", "EnumType", "MessageType":
417 // Avoid descending into a dependency to avoid a cycle.
418 // Just record the full name if available.
419 //
420 // TODO: Cycle support in cmp would be useful here.
421 v := m.Call(nil)[0]
422 if !v.IsNil() {
423 out[name] = v.Interface().(pref.Descriptor).FullName()
424 }
425 default:
426 out[name] = m.Call(nil)[0].Interface()
427 }
428 }
429 }
430 return out
431 }),
432 cmp.Transformer("", func(v pref.Value) interface{} {
433 return v.Interface()
434 }),
435 }
436
437 for _, tt := range tests {
438 t.Run(string(tt.want.FullName()), func(t *testing.T) {
439 if diff := cmp.Diff(&tt.want, &tt.got, opts); diff != "" {
440 t.Errorf("descriptor mismatch (-want, +got):\n%s", diff)
441 }
442 })
443 }
444}