33 """Tests for google.protobuf.descriptor_database."""
35 __author__ =
'matthewtoia@google.com (Matt Toia)'
38 import unittest2
as unittest
51 @testing_refleaks.TestCase
56 file_desc_proto = descriptor_pb2.FileDescriptorProto.FromString(
57 factory_test2_pb2.DESCRIPTOR.serialized_pb)
58 file_desc_proto2 = descriptor_pb2.FileDescriptorProto.FromString(
59 no_package_pb2.DESCRIPTOR.serialized_pb)
60 db.Add(file_desc_proto)
61 db.Add(file_desc_proto2)
63 self.assertEqual(file_desc_proto, db.FindFileByName(
64 'google/protobuf/internal/factory_test2.proto'))
66 self.assertEqual(file_desc_proto, db.FindFileContainingSymbol(
67 'google.protobuf.python.internal.Factory2Message'))
69 self.assertEqual(file_desc_proto, db.FindFileContainingSymbol(
70 'google.protobuf.python.internal.Factory2Message.NestedFactory2Message'))
72 self.assertEqual(file_desc_proto, db.FindFileContainingSymbol(
73 'google.protobuf.python.internal.Factory2Enum'))
75 self.assertEqual(file_desc_proto, db.FindFileContainingSymbol(
76 'google.protobuf.python.internal.Factory2Message.NestedFactory2Enum'))
77 self.assertEqual(file_desc_proto, db.FindFileContainingSymbol(
78 'google.protobuf.python.internal.MessageWithNestedEnumOnly.NestedEnum'))
80 self.assertEqual(file_desc_proto, db.FindFileContainingSymbol(
81 'google.protobuf.python.internal.Factory2Message.list_field'))
83 self.assertEqual(file_desc_proto, db.FindFileContainingSymbol(
84 'google.protobuf.python.internal.Factory2Enum.FACTORY_2_VALUE_0'))
85 self.assertEqual(file_desc_proto, db.FindFileContainingSymbol(
86 'google.protobuf.python.internal.FACTORY_2_VALUE_0'))
87 self.assertEqual(file_desc_proto2, db.FindFileContainingSymbol(
88 '.NO_PACKAGE_VALUE_0'))
90 self.assertEqual(file_desc_proto, db.FindFileContainingSymbol(
91 'google.protobuf.python.internal.another_field'))
93 self.assertEqual(file_desc_proto, db.FindFileContainingSymbol(
94 'google.protobuf.python.internal.Factory2Message.one_more_field'))
97 file_desc_proto2 = descriptor_pb2.FileDescriptorProto.FromString(
98 unittest_pb2.DESCRIPTOR.serialized_pb)
99 db.Add(file_desc_proto2)
100 self.assertEqual(file_desc_proto2, db.FindFileContainingSymbol(
101 'protobuf_unittest.TestService'))
105 self.assertEqual(file_desc_proto2, db.FindFileContainingSymbol(
106 'protobuf_unittest.TestAllTypes.none_field'))
108 with self.assertRaisesRegexp(KeyError,
r'\'protobuf_unittest\.NoneMessage\''):
109 db.FindFileContainingSymbol(
'protobuf_unittest.NoneMessage')
113 unittest_fd = descriptor_pb2.FileDescriptorProto.FromString(
114 unittest_pb2.DESCRIPTOR.serialized_pb)
116 conflict_fd = descriptor_pb2.FileDescriptorProto.FromString(
117 unittest_pb2.DESCRIPTOR.serialized_pb)
118 conflict_fd.name =
'other_file2'
119 with warnings.catch_warnings(record=
True)
as w:
121 warnings.simplefilter(
'always')
123 self.assertTrue(
len(w))
124 self.assertIs(w[0].category, RuntimeWarning)
125 self.assertIn(
'Conflict register for file "other_file2": ',
127 self.assertIn(
'already defined in file '
128 '"google/protobuf/unittest.proto"',
131 if __name__ ==
'__main__':