Index: third_party/protobuf/python/google/protobuf/internal/descriptor_test.py |
diff --git a/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py b/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py |
index b8e75553358f5d72191cf30cf4ef9f9b04421431..1f148ab90b46571d9f299d5d89381ac8216c0274 100755 |
--- a/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py |
+++ b/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py |
@@ -77,27 +77,24 @@ class DescriptorTest(unittest.TestCase): |
enum_proto.value.add(name='FOREIGN_BAR', number=5) |
enum_proto.value.add(name='FOREIGN_BAZ', number=6) |
+ file_proto.message_type.add(name='ResponseMessage') |
+ service_proto = file_proto.service.add( |
+ name='Service') |
+ method_proto = service_proto.method.add( |
+ name='CallMethod', |
+ input_type='.protobuf_unittest.NestedMessage', |
+ output_type='.protobuf_unittest.ResponseMessage') |
+ |
+ # Note: Calling DescriptorPool.Add() multiple times with the same file only |
+ # works if the input is canonical; in particular, all type names must be |
+ # fully qualified. |
self.pool = self.GetDescriptorPool() |
self.pool.Add(file_proto) |
self.my_file = self.pool.FindFileByName(file_proto.name) |
self.my_message = self.my_file.message_types_by_name[message_proto.name] |
self.my_enum = self.my_message.enum_types_by_name[enum_proto.name] |
- |
- self.my_method = descriptor.MethodDescriptor( |
- name='Bar', |
- full_name='protobuf_unittest.TestService.Bar', |
- index=0, |
- containing_service=None, |
- input_type=None, |
- output_type=None) |
- self.my_service = descriptor.ServiceDescriptor( |
- name='TestServiceWithOptions', |
- full_name='protobuf_unittest.TestServiceWithOptions', |
- file=self.my_file, |
- index=0, |
- methods=[ |
- self.my_method |
- ]) |
+ self.my_service = self.my_file.services_by_name[service_proto.name] |
+ self.my_method = self.my_service.methods_by_name[method_proto.name] |
def GetDescriptorPool(self): |
return symbol_database.Default().pool |
@@ -139,13 +136,14 @@ class DescriptorTest(unittest.TestCase): |
file_descriptor = unittest_custom_options_pb2.DESCRIPTOR |
message_descriptor =\ |
unittest_custom_options_pb2.TestMessageWithCustomOptions.DESCRIPTOR |
- field_descriptor = message_descriptor.fields_by_name["field1"] |
- enum_descriptor = message_descriptor.enum_types_by_name["AnEnum"] |
+ field_descriptor = message_descriptor.fields_by_name['field1'] |
+ oneof_descriptor = message_descriptor.oneofs_by_name['AnOneof'] |
+ enum_descriptor = message_descriptor.enum_types_by_name['AnEnum'] |
enum_value_descriptor =\ |
- message_descriptor.enum_values_by_name["ANENUM_VAL2"] |
+ message_descriptor.enum_values_by_name['ANENUM_VAL2'] |
service_descriptor =\ |
unittest_custom_options_pb2.TestServiceWithCustomOptions.DESCRIPTOR |
- method_descriptor = service_descriptor.FindMethodByName("Foo") |
+ method_descriptor = service_descriptor.FindMethodByName('Foo') |
file_options = file_descriptor.GetOptions() |
file_opt1 = unittest_custom_options_pb2.file_opt1 |
@@ -158,6 +156,9 @@ class DescriptorTest(unittest.TestCase): |
self.assertEqual(8765432109, field_options.Extensions[field_opt1]) |
field_opt2 = unittest_custom_options_pb2.field_opt2 |
self.assertEqual(42, field_options.Extensions[field_opt2]) |
+ oneof_options = oneof_descriptor.GetOptions() |
+ oneof_opt1 = unittest_custom_options_pb2.oneof_opt1 |
+ self.assertEqual(-99, oneof_options.Extensions[oneof_opt1]) |
enum_options = enum_descriptor.GetOptions() |
enum_opt1 = unittest_custom_options_pb2.enum_opt1 |
self.assertEqual(-789, enum_options.Extensions[enum_opt1]) |
@@ -765,6 +766,8 @@ class MakeDescriptorTest(unittest.TestCase): |
'Foo2.Sub.bar_field') |
self.assertEqual(result.nested_types[0].fields[0].enum_type, |
result.nested_types[0].enum_types[0]) |
+ self.assertFalse(result.has_options) |
+ self.assertFalse(result.fields[0].has_options) |
def testMakeDescriptorWithUnsignedIntField(self): |
file_descriptor_proto = descriptor_pb2.FileDescriptorProto() |
@@ -817,6 +820,23 @@ class MakeDescriptorTest(unittest.TestCase): |
self.assertEqual(result.fields[index].camelcase_name, |
camelcase_names[index]) |
+ def testJsonName(self): |
+ descriptor_proto = descriptor_pb2.DescriptorProto() |
+ descriptor_proto.name = 'TestJsonName' |
+ names = ['field_name', 'fieldName', 'FieldName', |
+ '_field_name', 'FIELD_NAME', 'json_name'] |
+ json_names = ['fieldName', 'fieldName', 'FieldName', |
+ 'FieldName', 'FIELDNAME', '@type'] |
+ for index in range(len(names)): |
+ field = descriptor_proto.field.add() |
+ field.number = index + 1 |
+ field.name = names[index] |
+ field.json_name = '@type' |
+ result = descriptor.MakeDescriptor(descriptor_proto) |
+ for index in range(len(json_names)): |
+ self.assertEqual(result.fields[index].json_name, |
+ json_names[index]) |
+ |
if __name__ == '__main__': |
unittest.main() |