Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1)

Side by Side Diff: third_party/protobuf/python/google/protobuf/internal/descriptor_pool_test.py

Issue 2495533002: third_party/protobuf: Update to HEAD (83d681ee2c) (Closed)
Patch Set: Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 #! /usr/bin/env python 1 #! /usr/bin/env python
2 # 2 #
3 # Protocol Buffers - Google's data interchange format 3 # Protocol Buffers - Google's data interchange format
4 # Copyright 2008 Google Inc. All rights reserved. 4 # Copyright 2008 Google Inc. All rights reserved.
5 # https://developers.google.com/protocol-buffers/ 5 # https://developers.google.com/protocol-buffers/
6 # 6 #
7 # Redistribution and use in source and binary forms, with or without 7 # Redistribution and use in source and binary forms, with or without
8 # modification, are permitted provided that the following conditions are 8 # modification, are permitted provided that the following conditions are
9 # met: 9 # met:
10 # 10 #
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 44
45 from google.protobuf import unittest_import_pb2 45 from google.protobuf import unittest_import_pb2
46 from google.protobuf import unittest_import_public_pb2 46 from google.protobuf import unittest_import_public_pb2
47 from google.protobuf import unittest_pb2 47 from google.protobuf import unittest_pb2
48 from google.protobuf import descriptor_pb2 48 from google.protobuf import descriptor_pb2
49 from google.protobuf.internal import api_implementation 49 from google.protobuf.internal import api_implementation
50 from google.protobuf.internal import descriptor_pool_test1_pb2 50 from google.protobuf.internal import descriptor_pool_test1_pb2
51 from google.protobuf.internal import descriptor_pool_test2_pb2 51 from google.protobuf.internal import descriptor_pool_test2_pb2
52 from google.protobuf.internal import factory_test1_pb2 52 from google.protobuf.internal import factory_test1_pb2
53 from google.protobuf.internal import factory_test2_pb2 53 from google.protobuf.internal import factory_test2_pb2
54 from google.protobuf.internal import file_options_test_pb2
54 from google.protobuf.internal import more_messages_pb2 55 from google.protobuf.internal import more_messages_pb2
55 from google.protobuf import descriptor 56 from google.protobuf import descriptor
56 from google.protobuf import descriptor_database 57 from google.protobuf import descriptor_database
57 from google.protobuf import descriptor_pool 58 from google.protobuf import descriptor_pool
58 from google.protobuf import message_factory 59 from google.protobuf import message_factory
59 from google.protobuf import symbol_database 60 from google.protobuf import symbol_database
60 61
61 62
62 class DescriptorPoolTest(unittest.TestCase): 63 class DescriptorPoolTest(unittest.TestCase):
63 64
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
111 self.pool.FindFileContainingSymbol('Does not exist') 112 self.pool.FindFileContainingSymbol('Does not exist')
112 113
113 def testFindMessageTypeByName(self): 114 def testFindMessageTypeByName(self):
114 msg1 = self.pool.FindMessageTypeByName( 115 msg1 = self.pool.FindMessageTypeByName(
115 'google.protobuf.python.internal.Factory1Message') 116 'google.protobuf.python.internal.Factory1Message')
116 self.assertIsInstance(msg1, descriptor.Descriptor) 117 self.assertIsInstance(msg1, descriptor.Descriptor)
117 self.assertEqual('Factory1Message', msg1.name) 118 self.assertEqual('Factory1Message', msg1.name)
118 self.assertEqual('google.protobuf.python.internal.Factory1Message', 119 self.assertEqual('google.protobuf.python.internal.Factory1Message',
119 msg1.full_name) 120 msg1.full_name)
120 self.assertEqual(None, msg1.containing_type) 121 self.assertEqual(None, msg1.containing_type)
122 self.assertFalse(msg1.has_options)
121 123
122 nested_msg1 = msg1.nested_types[0] 124 nested_msg1 = msg1.nested_types[0]
123 self.assertEqual('NestedFactory1Message', nested_msg1.name) 125 self.assertEqual('NestedFactory1Message', nested_msg1.name)
124 self.assertEqual(msg1, nested_msg1.containing_type) 126 self.assertEqual(msg1, nested_msg1.containing_type)
125 127
126 nested_enum1 = msg1.enum_types[0] 128 nested_enum1 = msg1.enum_types[0]
127 self.assertEqual('NestedFactory1Enum', nested_enum1.name) 129 self.assertEqual('NestedFactory1Enum', nested_enum1.name)
128 self.assertEqual(msg1, nested_enum1.containing_type) 130 self.assertEqual(msg1, nested_enum1.containing_type)
129 131
130 self.assertEqual(nested_msg1, msg1.fields_by_name[ 132 self.assertEqual(nested_msg1, msg1.fields_by_name[
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
194 def testFindMessageTypeByNameFailure(self): 196 def testFindMessageTypeByNameFailure(self):
195 with self.assertRaises(KeyError): 197 with self.assertRaises(KeyError):
196 self.pool.FindMessageTypeByName('Does not exist') 198 self.pool.FindMessageTypeByName('Does not exist')
197 199
198 def testFindEnumTypeByName(self): 200 def testFindEnumTypeByName(self):
199 enum1 = self.pool.FindEnumTypeByName( 201 enum1 = self.pool.FindEnumTypeByName(
200 'google.protobuf.python.internal.Factory1Enum') 202 'google.protobuf.python.internal.Factory1Enum')
201 self.assertIsInstance(enum1, descriptor.EnumDescriptor) 203 self.assertIsInstance(enum1, descriptor.EnumDescriptor)
202 self.assertEqual(0, enum1.values_by_name['FACTORY_1_VALUE_0'].number) 204 self.assertEqual(0, enum1.values_by_name['FACTORY_1_VALUE_0'].number)
203 self.assertEqual(1, enum1.values_by_name['FACTORY_1_VALUE_1'].number) 205 self.assertEqual(1, enum1.values_by_name['FACTORY_1_VALUE_1'].number)
206 self.assertFalse(enum1.has_options)
204 207
205 nested_enum1 = self.pool.FindEnumTypeByName( 208 nested_enum1 = self.pool.FindEnumTypeByName(
206 'google.protobuf.python.internal.Factory1Message.NestedFactory1Enum') 209 'google.protobuf.python.internal.Factory1Message.NestedFactory1Enum')
207 self.assertIsInstance(nested_enum1, descriptor.EnumDescriptor) 210 self.assertIsInstance(nested_enum1, descriptor.EnumDescriptor)
208 self.assertEqual( 211 self.assertEqual(
209 0, nested_enum1.values_by_name['NESTED_FACTORY_1_VALUE_0'].number) 212 0, nested_enum1.values_by_name['NESTED_FACTORY_1_VALUE_0'].number)
210 self.assertEqual( 213 self.assertEqual(
211 1, nested_enum1.values_by_name['NESTED_FACTORY_1_VALUE_1'].number) 214 1, nested_enum1.values_by_name['NESTED_FACTORY_1_VALUE_1'].number)
212 215
213 enum2 = self.pool.FindEnumTypeByName( 216 enum2 = self.pool.FindEnumTypeByName(
(...skipping 12 matching lines...) Expand all
226 229
227 def testFindEnumTypeByNameFailure(self): 230 def testFindEnumTypeByNameFailure(self):
228 with self.assertRaises(KeyError): 231 with self.assertRaises(KeyError):
229 self.pool.FindEnumTypeByName('Does not exist') 232 self.pool.FindEnumTypeByName('Does not exist')
230 233
231 def testFindFieldByName(self): 234 def testFindFieldByName(self):
232 field = self.pool.FindFieldByName( 235 field = self.pool.FindFieldByName(
233 'google.protobuf.python.internal.Factory1Message.list_value') 236 'google.protobuf.python.internal.Factory1Message.list_value')
234 self.assertEqual(field.name, 'list_value') 237 self.assertEqual(field.name, 'list_value')
235 self.assertEqual(field.label, field.LABEL_REPEATED) 238 self.assertEqual(field.label, field.LABEL_REPEATED)
239 self.assertFalse(field.has_options)
240
236 with self.assertRaises(KeyError): 241 with self.assertRaises(KeyError):
237 self.pool.FindFieldByName('Does not exist') 242 self.pool.FindFieldByName('Does not exist')
238 243
239 def testFindExtensionByName(self): 244 def testFindExtensionByName(self):
240 # An extension defined in a message. 245 # An extension defined in a message.
241 extension = self.pool.FindExtensionByName( 246 extension = self.pool.FindExtensionByName(
242 'google.protobuf.python.internal.Factory2Message.one_more_field') 247 'google.protobuf.python.internal.Factory2Message.one_more_field')
243 self.assertEqual(extension.name, 'one_more_field') 248 self.assertEqual(extension.name, 'one_more_field')
244 # An extension defined at file scope. 249 # An extension defined at file scope.
245 extension = self.pool.FindExtensionByName( 250 extension = self.pool.FindExtensionByName(
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
440 expected_field_full_name = '.'.join([msg_desc.full_name, name]) 445 expected_field_full_name = '.'.join([msg_desc.full_name, name])
441 test.assertEqual(expected_field_full_name, field_desc.full_name) 446 test.assertEqual(expected_field_full_name, field_desc.full_name)
442 test.assertEqual(index, field_desc.index) 447 test.assertEqual(index, field_desc.index)
443 test.assertEqual(self.number, field_desc.number) 448 test.assertEqual(self.number, field_desc.number)
444 test.assertEqual(descriptor.FieldDescriptor.TYPE_ENUM, field_desc.type) 449 test.assertEqual(descriptor.FieldDescriptor.TYPE_ENUM, field_desc.type)
445 test.assertEqual(descriptor.FieldDescriptor.CPPTYPE_ENUM, 450 test.assertEqual(descriptor.FieldDescriptor.CPPTYPE_ENUM,
446 field_desc.cpp_type) 451 field_desc.cpp_type)
447 test.assertTrue(field_desc.has_default_value) 452 test.assertTrue(field_desc.has_default_value)
448 test.assertEqual(enum_desc.values_by_name[self.default_value].number, 453 test.assertEqual(enum_desc.values_by_name[self.default_value].number,
449 field_desc.default_value) 454 field_desc.default_value)
455 test.assertFalse(enum_desc.values_by_name[self.default_value].has_options)
450 test.assertEqual(msg_desc, field_desc.containing_type) 456 test.assertEqual(msg_desc, field_desc.containing_type)
451 test.assertEqual(enum_desc, field_desc.enum_type) 457 test.assertEqual(enum_desc, field_desc.enum_type)
452 458
453 459
454 class MessageField(object): 460 class MessageField(object):
455 461
456 def __init__(self, number, type_name): 462 def __init__(self, number, type_name):
457 self.number = number 463 self.number = number
458 self.type_name = type_name 464 self.type_name = type_name
459 465
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
623 pool = descriptor_pool.DescriptorPool() 629 pool = descriptor_pool.DescriptorPool()
624 file_desc = descriptor_pb2.FileDescriptorProto( 630 file_desc = descriptor_pb2.FileDescriptorProto(
625 name='some/file.proto', package='package') 631 name='some/file.proto', package='package')
626 file_desc.message_type.add(name='Message') 632 file_desc.message_type.add(name='Message')
627 pool.Add(file_desc) 633 pool.Add(file_desc)
628 self.assertEqual(pool.FindFileByName('some/file.proto').name, 634 self.assertEqual(pool.FindFileByName('some/file.proto').name,
629 'some/file.proto') 635 'some/file.proto')
630 self.assertEqual(pool.FindMessageTypeByName('package.Message').name, 636 self.assertEqual(pool.FindMessageTypeByName('package.Message').name,
631 'Message') 637 'Message')
632 638
639 def testFileDescriptorOptionsWithCustomDescriptorPool(self):
640 # Create a descriptor pool, and add a new FileDescriptorProto to it.
641 pool = descriptor_pool.DescriptorPool()
642 file_name = 'file_descriptor_options_with_custom_descriptor_pool.proto'
643 file_descriptor_proto = descriptor_pb2.FileDescriptorProto(name=file_name)
644 extension_id = file_options_test_pb2.foo_options
645 file_descriptor_proto.options.Extensions[extension_id].foo_name = 'foo'
646 pool.Add(file_descriptor_proto)
647 # The options set on the FileDescriptorProto should be available in the
648 # descriptor even if they contain extensions that cannot be deserialized
649 # using the pool.
650 file_descriptor = pool.FindFileByName(file_name)
651 options = file_descriptor.GetOptions()
652 self.assertEqual('foo', options.Extensions[extension_id].foo_name)
653 # The object returned by GetOptions() is cached.
654 self.assertIs(options, file_descriptor.GetOptions())
655
633 656
634 @unittest.skipIf( 657 @unittest.skipIf(
635 api_implementation.Type() != 'cpp', 658 api_implementation.Type() != 'cpp',
636 'default_pool is only supported by the C++ implementation') 659 'default_pool is only supported by the C++ implementation')
637 class DefaultPoolTest(unittest.TestCase): 660 class DefaultPoolTest(unittest.TestCase):
638 661
639 def testFindMethods(self): 662 def testFindMethods(self):
640 # pylint: disable=g-import-not-at-top 663 # pylint: disable=g-import-not-at-top
641 from google.protobuf.pyext import _message 664 from google.protobuf.pyext import _message
642 pool = _message.default_pool 665 pool = _message.default_pool
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
741 ExtensionField(1001, 'DescriptorPoolTest1')), 764 ExtensionField(1001, 'DescriptorPoolTest1')),
742 ]), 765 ]),
743 }, 766 },
744 dependencies=['google/protobuf/internal/descriptor_pool_test1.proto', 767 dependencies=['google/protobuf/internal/descriptor_pool_test1.proto',
745 'google/protobuf/internal/more_messages.proto'], 768 'google/protobuf/internal/more_messages.proto'],
746 public_dependencies=['google/protobuf/internal/more_messages.proto']) 769 public_dependencies=['google/protobuf/internal/more_messages.proto'])
747 770
748 771
749 if __name__ == '__main__': 772 if __name__ == '__main__':
750 unittest.main() 773 unittest.main()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698