From 7ee25830c6707540242f441df5cd1c2a2000ca58 Mon Sep 17 00:00:00 2001 From: Tres Seaver Date: Tue, 13 Jan 2015 14:47:32 -0500 Subject: Drop dependency on 'google.apputils'. Use stdlib's 'unittest' instead. --- python/google/protobuf/internal/message_test.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'python/google/protobuf/internal/message_test.py') diff --git a/python/google/protobuf/internal/message_test.py b/python/google/protobuf/internal/message_test.py index 42e2ad7e..4227c480 100755 --- a/python/google/protobuf/internal/message_test.py +++ b/python/google/protobuf/internal/message_test.py @@ -48,8 +48,8 @@ import math import operator import pickle import sys +import unittest -from google.apputils import basetest from google.protobuf import unittest_pb2 from google.protobuf.internal import api_implementation from google.protobuf.internal import test_util @@ -69,7 +69,7 @@ def IsNegInf(val): return isinf(val) and (val < 0) -class MessageTest(basetest.TestCase): +class MessageTest(unittest.TestCase): def testBadUtf8String(self): if api_implementation.Type() != 'python': @@ -695,7 +695,7 @@ class MessageTest(basetest.TestCase): m.HasField('repeated_int32') -class ValidTypeNamesTest(basetest.TestCase): +class ValidTypeNamesTest(unittest.TestCase): def assertImportFromName(self, msg, base_name): # Parse to extra 'some.name' as a string. @@ -718,4 +718,4 @@ class ValidTypeNamesTest(basetest.TestCase): if __name__ == '__main__': - basetest.main() + unittest.main() -- cgit v1.2.3 From a2abc947c0d509354e61e321215989829a68794e Mon Sep 17 00:00:00 2001 From: Tres Seaver Date: Tue, 13 Jan 2015 15:47:55 -0500 Subject: Straddle Python 2.6, 2.7, 3.3, 3.4. --- .../protobuf/internal/descriptor_database_test.py | 12 +-- .../protobuf/internal/descriptor_pool_test.py | 100 ++++++++++----------- python/google/protobuf/internal/descriptor_test.py | 2 +- python/google/protobuf/internal/generator_test.py | 16 ++-- .../protobuf/internal/message_factory_test.py | 8 +- python/google/protobuf/internal/message_test.py | 18 ++-- python/google/protobuf/internal/reflection_test.py | 42 ++++----- .../protobuf/internal/symbol_database_test.py | 22 ++--- .../google/protobuf/internal/text_encoding_test.py | 8 +- .../google/protobuf/internal/text_format_test.py | 18 ++-- 10 files changed, 123 insertions(+), 123 deletions(-) (limited to 'python/google/protobuf/internal/message_test.py') diff --git a/python/google/protobuf/internal/descriptor_database_test.py b/python/google/protobuf/internal/descriptor_database_test.py index edf66a63..ad13f889 100644 --- a/python/google/protobuf/internal/descriptor_database_test.py +++ b/python/google/protobuf/internal/descriptor_database_test.py @@ -49,17 +49,17 @@ class DescriptorDatabaseTest(unittest.TestCase): factory_test2_pb2.DESCRIPTOR.serialized_pb) db.Add(file_desc_proto) - self.assertEquals(file_desc_proto, db.FindFileByName( + self.assertEqual(file_desc_proto, db.FindFileByName( 'google/protobuf/internal/factory_test2.proto')) - self.assertEquals(file_desc_proto, db.FindFileContainingSymbol( + self.assertEqual(file_desc_proto, db.FindFileContainingSymbol( 'google.protobuf.python.internal.Factory2Message')) - self.assertEquals(file_desc_proto, db.FindFileContainingSymbol( + self.assertEqual(file_desc_proto, db.FindFileContainingSymbol( 'google.protobuf.python.internal.Factory2Message.NestedFactory2Message')) - self.assertEquals(file_desc_proto, db.FindFileContainingSymbol( + self.assertEqual(file_desc_proto, db.FindFileContainingSymbol( 'google.protobuf.python.internal.Factory2Enum')) - self.assertEquals(file_desc_proto, db.FindFileContainingSymbol( + self.assertEqual(file_desc_proto, db.FindFileContainingSymbol( 'google.protobuf.python.internal.Factory2Message.NestedFactory2Enum')) - self.assertEquals(file_desc_proto, db.FindFileContainingSymbol( + self.assertEqual(file_desc_proto, db.FindFileContainingSymbol( 'google.protobuf.python.internal.MessageWithNestedEnumOnly.NestedEnum')) if __name__ == '__main__': diff --git a/python/google/protobuf/internal/descriptor_pool_test.py b/python/google/protobuf/internal/descriptor_pool_test.py index 6d04ebaa..fa1a511a 100644 --- a/python/google/protobuf/internal/descriptor_pool_test.py +++ b/python/google/protobuf/internal/descriptor_pool_test.py @@ -65,15 +65,15 @@ class DescriptorPoolTest(unittest.TestCase): name1 = 'google/protobuf/internal/factory_test1.proto' file_desc1 = self.pool.FindFileByName(name1) self.assertIsInstance(file_desc1, descriptor.FileDescriptor) - self.assertEquals(name1, file_desc1.name) - self.assertEquals('google.protobuf.python.internal', file_desc1.package) + self.assertEqual(name1, file_desc1.name) + self.assertEqual('google.protobuf.python.internal', file_desc1.package) self.assertIn('Factory1Message', file_desc1.message_types_by_name) name2 = 'google/protobuf/internal/factory_test2.proto' file_desc2 = self.pool.FindFileByName(name2) self.assertIsInstance(file_desc2, descriptor.FileDescriptor) - self.assertEquals(name2, file_desc2.name) - self.assertEquals('google.protobuf.python.internal', file_desc2.package) + self.assertEqual(name2, file_desc2.name) + self.assertEqual('google.protobuf.python.internal', file_desc2.package) self.assertIn('Factory2Message', file_desc2.message_types_by_name) def testFindFileByNameFailure(self): @@ -84,17 +84,17 @@ class DescriptorPoolTest(unittest.TestCase): file_desc1 = self.pool.FindFileContainingSymbol( 'google.protobuf.python.internal.Factory1Message') self.assertIsInstance(file_desc1, descriptor.FileDescriptor) - self.assertEquals('google/protobuf/internal/factory_test1.proto', + self.assertEqual('google/protobuf/internal/factory_test1.proto', file_desc1.name) - self.assertEquals('google.protobuf.python.internal', file_desc1.package) + self.assertEqual('google.protobuf.python.internal', file_desc1.package) self.assertIn('Factory1Message', file_desc1.message_types_by_name) file_desc2 = self.pool.FindFileContainingSymbol( 'google.protobuf.python.internal.Factory2Message') self.assertIsInstance(file_desc2, descriptor.FileDescriptor) - self.assertEquals('google/protobuf/internal/factory_test2.proto', + self.assertEqual('google/protobuf/internal/factory_test2.proto', file_desc2.name) - self.assertEquals('google.protobuf.python.internal', file_desc2.package) + self.assertEqual('google.protobuf.python.internal', file_desc2.package) self.assertIn('Factory2Message', file_desc2.message_types_by_name) def testFindFileContainingSymbolFailure(self): @@ -105,72 +105,72 @@ class DescriptorPoolTest(unittest.TestCase): msg1 = self.pool.FindMessageTypeByName( 'google.protobuf.python.internal.Factory1Message') self.assertIsInstance(msg1, descriptor.Descriptor) - self.assertEquals('Factory1Message', msg1.name) - self.assertEquals('google.protobuf.python.internal.Factory1Message', + self.assertEqual('Factory1Message', msg1.name) + self.assertEqual('google.protobuf.python.internal.Factory1Message', msg1.full_name) - self.assertEquals(None, msg1.containing_type) + self.assertEqual(None, msg1.containing_type) nested_msg1 = msg1.nested_types[0] - self.assertEquals('NestedFactory1Message', nested_msg1.name) - self.assertEquals(msg1, nested_msg1.containing_type) + self.assertEqual('NestedFactory1Message', nested_msg1.name) + self.assertEqual(msg1, nested_msg1.containing_type) nested_enum1 = msg1.enum_types[0] - self.assertEquals('NestedFactory1Enum', nested_enum1.name) - self.assertEquals(msg1, nested_enum1.containing_type) + self.assertEqual('NestedFactory1Enum', nested_enum1.name) + self.assertEqual(msg1, nested_enum1.containing_type) - self.assertEquals(nested_msg1, msg1.fields_by_name[ + self.assertEqual(nested_msg1, msg1.fields_by_name[ 'nested_factory_1_message'].message_type) - self.assertEquals(nested_enum1, msg1.fields_by_name[ + self.assertEqual(nested_enum1, msg1.fields_by_name[ 'nested_factory_1_enum'].enum_type) msg2 = self.pool.FindMessageTypeByName( 'google.protobuf.python.internal.Factory2Message') self.assertIsInstance(msg2, descriptor.Descriptor) - self.assertEquals('Factory2Message', msg2.name) - self.assertEquals('google.protobuf.python.internal.Factory2Message', + self.assertEqual('Factory2Message', msg2.name) + self.assertEqual('google.protobuf.python.internal.Factory2Message', msg2.full_name) self.assertIsNone(msg2.containing_type) nested_msg2 = msg2.nested_types[0] - self.assertEquals('NestedFactory2Message', nested_msg2.name) - self.assertEquals(msg2, nested_msg2.containing_type) + self.assertEqual('NestedFactory2Message', nested_msg2.name) + self.assertEqual(msg2, nested_msg2.containing_type) nested_enum2 = msg2.enum_types[0] - self.assertEquals('NestedFactory2Enum', nested_enum2.name) - self.assertEquals(msg2, nested_enum2.containing_type) + self.assertEqual('NestedFactory2Enum', nested_enum2.name) + self.assertEqual(msg2, nested_enum2.containing_type) - self.assertEquals(nested_msg2, msg2.fields_by_name[ + self.assertEqual(nested_msg2, msg2.fields_by_name[ 'nested_factory_2_message'].message_type) - self.assertEquals(nested_enum2, msg2.fields_by_name[ + self.assertEqual(nested_enum2, msg2.fields_by_name[ 'nested_factory_2_enum'].enum_type) self.assertTrue(msg2.fields_by_name['int_with_default'].has_default_value) - self.assertEquals( + self.assertEqual( 1776, msg2.fields_by_name['int_with_default'].default_value) self.assertTrue( msg2.fields_by_name['double_with_default'].has_default_value) - self.assertEquals( + self.assertEqual( 9.99, msg2.fields_by_name['double_with_default'].default_value) self.assertTrue( msg2.fields_by_name['string_with_default'].has_default_value) - self.assertEquals( + self.assertEqual( 'hello world', msg2.fields_by_name['string_with_default'].default_value) self.assertTrue(msg2.fields_by_name['bool_with_default'].has_default_value) self.assertFalse(msg2.fields_by_name['bool_with_default'].default_value) self.assertTrue(msg2.fields_by_name['enum_with_default'].has_default_value) - self.assertEquals( + self.assertEqual( 1, msg2.fields_by_name['enum_with_default'].default_value) msg3 = self.pool.FindMessageTypeByName( 'google.protobuf.python.internal.Factory2Message.NestedFactory2Message') - self.assertEquals(nested_msg2, msg3) + self.assertEqual(nested_msg2, msg3) self.assertTrue(msg2.fields_by_name['bytes_with_default'].has_default_value) - self.assertEquals( + self.assertEqual( b'a\xfb\x00c', msg2.fields_by_name['bytes_with_default'].default_value) @@ -190,29 +190,29 @@ class DescriptorPoolTest(unittest.TestCase): enum1 = self.pool.FindEnumTypeByName( 'google.protobuf.python.internal.Factory1Enum') self.assertIsInstance(enum1, descriptor.EnumDescriptor) - self.assertEquals(0, enum1.values_by_name['FACTORY_1_VALUE_0'].number) - self.assertEquals(1, enum1.values_by_name['FACTORY_1_VALUE_1'].number) + self.assertEqual(0, enum1.values_by_name['FACTORY_1_VALUE_0'].number) + self.assertEqual(1, enum1.values_by_name['FACTORY_1_VALUE_1'].number) nested_enum1 = self.pool.FindEnumTypeByName( 'google.protobuf.python.internal.Factory1Message.NestedFactory1Enum') self.assertIsInstance(nested_enum1, descriptor.EnumDescriptor) - self.assertEquals( + self.assertEqual( 0, nested_enum1.values_by_name['NESTED_FACTORY_1_VALUE_0'].number) - self.assertEquals( + self.assertEqual( 1, nested_enum1.values_by_name['NESTED_FACTORY_1_VALUE_1'].number) enum2 = self.pool.FindEnumTypeByName( 'google.protobuf.python.internal.Factory2Enum') self.assertIsInstance(enum2, descriptor.EnumDescriptor) - self.assertEquals(0, enum2.values_by_name['FACTORY_2_VALUE_0'].number) - self.assertEquals(1, enum2.values_by_name['FACTORY_2_VALUE_1'].number) + self.assertEqual(0, enum2.values_by_name['FACTORY_2_VALUE_0'].number) + self.assertEqual(1, enum2.values_by_name['FACTORY_2_VALUE_1'].number) nested_enum2 = self.pool.FindEnumTypeByName( 'google.protobuf.python.internal.Factory2Message.NestedFactory2Enum') self.assertIsInstance(nested_enum2, descriptor.EnumDescriptor) - self.assertEquals( + self.assertEqual( 0, nested_enum2.values_by_name['NESTED_FACTORY_2_VALUE_0'].number) - self.assertEquals( + self.assertEqual( 1, nested_enum2.values_by_name['NESTED_FACTORY_2_VALUE_1'].number) def testFindEnumTypeByNameFailure(self): @@ -274,8 +274,8 @@ class ProtoFile(object): def CheckFile(self, test, pool): file_desc = pool.FindFileByName(self.name) - test.assertEquals(self.name, file_desc.name) - test.assertEquals(self.package, file_desc.package) + test.assertEqual(self.name, file_desc.name) + test.assertEqual(self.package, file_desc.package) dependencies_names = [f.name for f in file_desc.dependencies] test.assertEqual(self.dependencies, dependencies_names) for name, msg_type in self.messages.items(): @@ -430,7 +430,7 @@ class AddDescriptorTest(unittest.TestCase): def _TestMessage(self, prefix): pool = descriptor_pool.DescriptorPool() pool.AddDescriptor(unittest_pb2.TestAllTypes.DESCRIPTOR) - self.assertEquals( + self.assertEqual( 'protobuf_unittest.TestAllTypes', pool.FindMessageTypeByName( prefix + 'protobuf_unittest.TestAllTypes').full_name) @@ -441,18 +441,18 @@ class AddDescriptorTest(unittest.TestCase): prefix + 'protobuf_unittest.TestAllTypes.NestedMessage') pool.AddDescriptor(unittest_pb2.TestAllTypes.NestedMessage.DESCRIPTOR) - self.assertEquals( + self.assertEqual( 'protobuf_unittest.TestAllTypes.NestedMessage', pool.FindMessageTypeByName( prefix + 'protobuf_unittest.TestAllTypes.NestedMessage').full_name) # Files are implicitly also indexed when messages are added. - self.assertEquals( + self.assertEqual( 'google/protobuf/unittest.proto', pool.FindFileByName( 'google/protobuf/unittest.proto').name) - self.assertEquals( + self.assertEqual( 'google/protobuf/unittest.proto', pool.FindFileContainingSymbol( prefix + 'protobuf_unittest.TestAllTypes.NestedMessage').name) @@ -464,7 +464,7 @@ class AddDescriptorTest(unittest.TestCase): def _TestEnum(self, prefix): pool = descriptor_pool.DescriptorPool() pool.AddEnumDescriptor(unittest_pb2.ForeignEnum.DESCRIPTOR) - self.assertEquals( + self.assertEqual( 'protobuf_unittest.ForeignEnum', pool.FindEnumTypeByName( prefix + 'protobuf_unittest.ForeignEnum').full_name) @@ -475,18 +475,18 @@ class AddDescriptorTest(unittest.TestCase): prefix + 'protobuf_unittest.ForeignEnum.NestedEnum') pool.AddEnumDescriptor(unittest_pb2.TestAllTypes.NestedEnum.DESCRIPTOR) - self.assertEquals( + self.assertEqual( 'protobuf_unittest.TestAllTypes.NestedEnum', pool.FindEnumTypeByName( prefix + 'protobuf_unittest.TestAllTypes.NestedEnum').full_name) # Files are implicitly also indexed when enums are added. - self.assertEquals( + self.assertEqual( 'google/protobuf/unittest.proto', pool.FindFileByName( 'google/protobuf/unittest.proto').name) - self.assertEquals( + self.assertEqual( 'google/protobuf/unittest.proto', pool.FindFileContainingSymbol( prefix + 'protobuf_unittest.TestAllTypes.NestedEnum').name) @@ -498,7 +498,7 @@ class AddDescriptorTest(unittest.TestCase): def testFile(self): pool = descriptor_pool.DescriptorPool() pool.AddFileDescriptor(unittest_pb2.DESCRIPTOR) - self.assertEquals( + self.assertEqual( 'google/protobuf/unittest.proto', pool.FindFileByName( 'google/protobuf/unittest.proto').name) diff --git a/python/google/protobuf/internal/descriptor_test.py b/python/google/protobuf/internal/descriptor_test.py index 13de7e1e..e1506fa4 100755 --- a/python/google/protobuf/internal/descriptor_test.py +++ b/python/google/protobuf/internal/descriptor_test.py @@ -673,7 +673,7 @@ class MakeDescriptorTest(unittest.TestCase): reformed_descriptor = descriptor.MakeDescriptor(descriptor_proto) options = reformed_descriptor.GetOptions() - self.assertEquals(101, + self.assertEqual(101, options.Extensions[unittest_custom_options_pb2.msgopt].i) if __name__ == '__main__': diff --git a/python/google/protobuf/internal/generator_test.py b/python/google/protobuf/internal/generator_test.py index 86c30dfb..afcf6227 100755 --- a/python/google/protobuf/internal/generator_test.py +++ b/python/google/protobuf/internal/generator_test.py @@ -154,7 +154,7 @@ class GeneratorTest(unittest.TestCase): # extension and for its value to be set to -789. def testNestedTypes(self): - self.assertEquals( + self.assertEqual( set(unittest_pb2.TestAllTypes.DESCRIPTOR.nested_types), set([ unittest_pb2.TestAllTypes.NestedMessage.DESCRIPTOR, @@ -306,36 +306,36 @@ class SymbolDatabaseRegistrationTest(unittest.TestCase): """Checks that messages, enums and files are correctly registered.""" def testGetSymbol(self): - self.assertEquals( + self.assertEqual( unittest_pb2.TestAllTypes, symbol_database.Default().GetSymbol( 'protobuf_unittest.TestAllTypes')) - self.assertEquals( + self.assertEqual( unittest_pb2.TestAllTypes.NestedMessage, symbol_database.Default().GetSymbol( 'protobuf_unittest.TestAllTypes.NestedMessage')) with self.assertRaises(KeyError): symbol_database.Default().GetSymbol('protobuf_unittest.NestedMessage') - self.assertEquals( + self.assertEqual( unittest_pb2.TestAllTypes.OptionalGroup, symbol_database.Default().GetSymbol( 'protobuf_unittest.TestAllTypes.OptionalGroup')) - self.assertEquals( + self.assertEqual( unittest_pb2.TestAllTypes.RepeatedGroup, symbol_database.Default().GetSymbol( 'protobuf_unittest.TestAllTypes.RepeatedGroup')) def testEnums(self): - self.assertEquals( + self.assertEqual( 'protobuf_unittest.ForeignEnum', symbol_database.Default().pool.FindEnumTypeByName( 'protobuf_unittest.ForeignEnum').full_name) - self.assertEquals( + self.assertEqual( 'protobuf_unittest.TestAllTypes.NestedEnum', symbol_database.Default().pool.FindEnumTypeByName( 'protobuf_unittest.TestAllTypes.NestedEnum').full_name) def testFindFileByName(self): - self.assertEquals( + self.assertEqual( 'google/protobuf/unittest.proto', symbol_database.Default().pool.FindFileByName( 'google/protobuf/unittest.proto').name) diff --git a/python/google/protobuf/internal/message_factory_test.py b/python/google/protobuf/internal/message_factory_test.py index 5a344a79..b33539a0 100644 --- a/python/google/protobuf/internal/message_factory_test.py +++ b/python/google/protobuf/internal/message_factory_test.py @@ -82,9 +82,9 @@ class MessageFactoryTest(unittest.TestCase): serialized = msg.SerializeToString() converted = factory_test2_pb2.Factory2Message.FromString(serialized) reserialized = converted.SerializeToString() - self.assertEquals(serialized, reserialized) + self.assertEqual(serialized, reserialized) result = cls.FromString(reserialized) - self.assertEquals(msg, result) + self.assertEqual(msg, result) def testGetPrototype(self): db = descriptor_database.DescriptorDatabase() @@ -125,8 +125,8 @@ class MessageFactoryTest(unittest.TestCase): 'google.protobuf.python.internal.another_field'] msg1.Extensions[ext1] = 'test1' msg1.Extensions[ext2] = 'test2' - self.assertEquals('test1', msg1.Extensions[ext1]) - self.assertEquals('test2', msg1.Extensions[ext2]) + self.assertEqual('test1', msg1.Extensions[ext1]) + self.assertEqual('test2', msg1.Extensions[ext2]) if __name__ == '__main__': diff --git a/python/google/protobuf/internal/message_test.py b/python/google/protobuf/internal/message_test.py index 4227c480..e69c49b6 100755 --- a/python/google/protobuf/internal/message_test.py +++ b/python/google/protobuf/internal/message_test.py @@ -98,7 +98,7 @@ class MessageTest(unittest.TestCase): golden_message.ParseFromString(golden_data) all_set = unittest_pb2.TestAllExtensions() test_util.SetAllExtensions(all_set) - self.assertEquals(all_set, golden_message) + self.assertEqual(all_set, golden_message) self.assertEqual(golden_data, golden_message.SerializeToString()) golden_copy = copy.deepcopy(golden_message) self.assertEqual(golden_data, golden_copy.SerializeToString()) @@ -109,7 +109,7 @@ class MessageTest(unittest.TestCase): golden_message.ParseFromString(golden_data) all_set = unittest_pb2.TestPackedTypes() test_util.SetAllPackedFields(all_set) - self.assertEquals(all_set, golden_message) + self.assertEqual(all_set, golden_message) self.assertEqual(golden_data, all_set.SerializeToString()) golden_copy = copy.deepcopy(golden_message) self.assertEqual(golden_data, golden_copy.SerializeToString()) @@ -120,7 +120,7 @@ class MessageTest(unittest.TestCase): golden_message.ParseFromString(golden_data) all_set = unittest_pb2.TestPackedExtensions() test_util.SetAllPackedExtensions(all_set) - self.assertEquals(all_set, golden_message) + self.assertEqual(all_set, golden_message) self.assertEqual(golden_data, all_set.SerializeToString()) golden_copy = copy.deepcopy(golden_message) self.assertEqual(golden_data, golden_copy.SerializeToString()) @@ -132,7 +132,7 @@ class MessageTest(unittest.TestCase): pickled_message = pickle.dumps(golden_message) unpickled_message = pickle.loads(pickled_message) - self.assertEquals(unpickled_message, golden_message) + self.assertEqual(unpickled_message, golden_message) def testPickleIncompleteProto(self): @@ -140,8 +140,8 @@ class MessageTest(unittest.TestCase): pickled_message = pickle.dumps(golden_message) unpickled_message = pickle.loads(pickled_message) - self.assertEquals(unpickled_message, golden_message) - self.assertEquals(unpickled_message.a, 1) + self.assertEqual(unpickled_message, golden_message) + self.assertEqual(unpickled_message.a, 1) # This is still an incomplete proto - so serializing should fail self.assertRaises(message.EncodeError, unpickled_message.SerializeToString) @@ -344,11 +344,11 @@ class MessageTest(unittest.TestCase): msg.repeated_nested_message.add(bb=3) msg.repeated_nested_message.add(bb=4) - self.assertEquals([1, 2, 3, 4], + self.assertEqual([1, 2, 3, 4], [m.bb for m in msg.repeated_nested_message]) - self.assertEquals([4, 3, 2, 1], + self.assertEqual([4, 3, 2, 1], [m.bb for m in reversed(msg.repeated_nested_message)]) - self.assertEquals([4, 3, 2, 1], + self.assertEqual([4, 3, 2, 1], [m.bb for m in msg.repeated_nested_message[::-1]]) def testSortingRepeatedScalarFieldsDefaultComparator(self): diff --git a/python/google/protobuf/internal/reflection_test.py b/python/google/protobuf/internal/reflection_test.py index 03f558fd..a3757992 100755 --- a/python/google/protobuf/internal/reflection_test.py +++ b/python/google/protobuf/internal/reflection_test.py @@ -141,10 +141,10 @@ class ReflectionTest(unittest.TestCase): repeated_bool=[True, False, False], repeated_string=["optional_string"]) - self.assertEquals([1, 2, 3, 4], list(proto.repeated_int32)) - self.assertEquals([1.23, 54.321], list(proto.repeated_double)) - self.assertEquals([True, False, False], list(proto.repeated_bool)) - self.assertEquals(["optional_string"], list(proto.repeated_string)) + self.assertEqual([1, 2, 3, 4], list(proto.repeated_int32)) + self.assertEqual([1.23, 54.321], list(proto.repeated_double)) + self.assertEqual([True, False, False], list(proto.repeated_bool)) + self.assertEqual(["optional_string"], list(proto.repeated_string)) def testRepeatedCompositeConstructor(self): # Constructor with only repeated composite types should succeed. @@ -163,18 +163,18 @@ class ReflectionTest(unittest.TestCase): unittest_pb2.TestAllTypes.RepeatedGroup(a=1), unittest_pb2.TestAllTypes.RepeatedGroup(a=2)]) - self.assertEquals( + self.assertEqual( [unittest_pb2.TestAllTypes.NestedMessage( bb=unittest_pb2.TestAllTypes.FOO), unittest_pb2.TestAllTypes.NestedMessage( bb=unittest_pb2.TestAllTypes.BAR)], list(proto.repeated_nested_message)) - self.assertEquals( + self.assertEqual( [unittest_pb2.ForeignMessage(c=-43), unittest_pb2.ForeignMessage(c=45324), unittest_pb2.ForeignMessage(c=12)], list(proto.repeated_foreign_message)) - self.assertEquals( + self.assertEqual( [unittest_pb2.TestAllTypes.RepeatedGroup(), unittest_pb2.TestAllTypes.RepeatedGroup(a=1), unittest_pb2.TestAllTypes.RepeatedGroup(a=2)], @@ -199,15 +199,15 @@ class ReflectionTest(unittest.TestCase): self.assertEqual(24, proto.optional_int32) self.assertEqual('optional_string', proto.optional_string) - self.assertEquals([1.23, 54.321], list(proto.repeated_double)) - self.assertEquals([True, False, False], list(proto.repeated_bool)) - self.assertEquals( + self.assertEqual([1.23, 54.321], list(proto.repeated_double)) + self.assertEqual([True, False, False], list(proto.repeated_bool)) + self.assertEqual( [unittest_pb2.TestAllTypes.NestedMessage( bb=unittest_pb2.TestAllTypes.FOO), unittest_pb2.TestAllTypes.NestedMessage( bb=unittest_pb2.TestAllTypes.BAR)], list(proto.repeated_nested_message)) - self.assertEquals( + self.assertEqual( [unittest_pb2.ForeignMessage(c=-43), unittest_pb2.ForeignMessage(c=45324), unittest_pb2.ForeignMessage(c=12)], @@ -235,18 +235,18 @@ class ReflectionTest(unittest.TestCase): def testConstructorInvalidatesCachedByteSize(self): message = unittest_pb2.TestAllTypes(optional_int32 = 12) - self.assertEquals(2, message.ByteSize()) + self.assertEqual(2, message.ByteSize()) message = unittest_pb2.TestAllTypes( optional_nested_message = unittest_pb2.TestAllTypes.NestedMessage()) - self.assertEquals(3, message.ByteSize()) + self.assertEqual(3, message.ByteSize()) message = unittest_pb2.TestAllTypes(repeated_int32 = [12]) - self.assertEquals(3, message.ByteSize()) + self.assertEqual(3, message.ByteSize()) message = unittest_pb2.TestAllTypes( repeated_nested_message = [unittest_pb2.TestAllTypes.NestedMessage()]) - self.assertEquals(3, message.ByteSize()) + self.assertEqual(3, message.ByteSize()) def testSimpleHasBits(self): # Test a scalar. @@ -1188,7 +1188,7 @@ class ReflectionTest(unittest.TestCase): self.assertTrue(1 in unittest_pb2.TestAllExtensions._extensions_by_number) # Make sure extensions haven't been registered into types that shouldn't # have any. - self.assertEquals(0, len(unittest_pb2.TestAllTypes._extensions_by_name)) + self.assertEqual(0, len(unittest_pb2.TestAllTypes._extensions_by_name)) # If message A directly contains message B, and # a.HasField('b') is currently False, then mutating any @@ -1512,18 +1512,18 @@ class ReflectionTest(unittest.TestCase): test_util.SetAllNonLazyFields(proto) # Clear the message. proto.Clear() - self.assertEquals(proto.ByteSize(), 0) + self.assertEqual(proto.ByteSize(), 0) empty_proto = unittest_pb2.TestAllTypes() - self.assertEquals(proto, empty_proto) + self.assertEqual(proto, empty_proto) # Test if extensions which were set are cleared. proto = unittest_pb2.TestAllExtensions() test_util.SetAllExtensions(proto) # Clear the message. proto.Clear() - self.assertEquals(proto.ByteSize(), 0) + self.assertEqual(proto.ByteSize(), 0) empty_proto = unittest_pb2.TestAllExtensions() - self.assertEquals(proto, empty_proto) + self.assertEqual(proto, empty_proto) def testDisconnectingBeforeClear(self): proto = unittest_pb2.TestAllTypes() @@ -2481,7 +2481,7 @@ class SerializationTest(unittest.TestCase): # Check that the message parsed well. extension_message1 = unittest_mset_pb2.TestMessageSetExtension1 extension1 = extension_message1.message_set_extension - self.assertEquals(12345, proto.Extensions[extension1].i) + self.assertEqual(12345, proto.Extensions[extension1].i) def testUnknownFields(self): proto = unittest_pb2.TestAllTypes() diff --git a/python/google/protobuf/internal/symbol_database_test.py b/python/google/protobuf/internal/symbol_database_test.py index a58cb1a4..bbe602b3 100644 --- a/python/google/protobuf/internal/symbol_database_test.py +++ b/python/google/protobuf/internal/symbol_database_test.py @@ -65,53 +65,53 @@ class SymbolDatabaseTest(unittest.TestCase): messages['protobuf_unittest.TestAllTypes']) def testGetSymbol(self): - self.assertEquals( + self.assertEqual( unittest_pb2.TestAllTypes, self._Database().GetSymbol( 'protobuf_unittest.TestAllTypes')) - self.assertEquals( + self.assertEqual( unittest_pb2.TestAllTypes.NestedMessage, self._Database().GetSymbol( 'protobuf_unittest.TestAllTypes.NestedMessage')) - self.assertEquals( + self.assertEqual( unittest_pb2.TestAllTypes.OptionalGroup, self._Database().GetSymbol( 'protobuf_unittest.TestAllTypes.OptionalGroup')) - self.assertEquals( + self.assertEqual( unittest_pb2.TestAllTypes.RepeatedGroup, self._Database().GetSymbol( 'protobuf_unittest.TestAllTypes.RepeatedGroup')) def testEnums(self): # Check registration of types in the pool. - self.assertEquals( + self.assertEqual( 'protobuf_unittest.ForeignEnum', self._Database().pool.FindEnumTypeByName( 'protobuf_unittest.ForeignEnum').full_name) - self.assertEquals( + self.assertEqual( 'protobuf_unittest.TestAllTypes.NestedEnum', self._Database().pool.FindEnumTypeByName( 'protobuf_unittest.TestAllTypes.NestedEnum').full_name) def testFindMessageTypeByName(self): - self.assertEquals( + self.assertEqual( 'protobuf_unittest.TestAllTypes', self._Database().pool.FindMessageTypeByName( 'protobuf_unittest.TestAllTypes').full_name) - self.assertEquals( + self.assertEqual( 'protobuf_unittest.TestAllTypes.NestedMessage', self._Database().pool.FindMessageTypeByName( 'protobuf_unittest.TestAllTypes.NestedMessage').full_name) def testFindFindContainingSymbol(self): # Lookup based on either enum or message. - self.assertEquals( + self.assertEqual( 'google/protobuf/unittest.proto', self._Database().pool.FindFileContainingSymbol( 'protobuf_unittest.TestAllTypes.NestedEnum').name) - self.assertEquals( + self.assertEqual( 'google/protobuf/unittest.proto', self._Database().pool.FindFileContainingSymbol( 'protobuf_unittest.TestAllTypes').name) def testFindFileByName(self): - self.assertEquals( + self.assertEqual( 'google/protobuf/unittest.proto', self._Database().pool.FindFileByName( 'google/protobuf/unittest.proto').name) diff --git a/python/google/protobuf/internal/text_encoding_test.py b/python/google/protobuf/internal/text_encoding_test.py index 48c30f01..fbd50bb8 100755 --- a/python/google/protobuf/internal/text_encoding_test.py +++ b/python/google/protobuf/internal/text_encoding_test.py @@ -54,15 +54,15 @@ TEST_VALUES = [ class TextEncodingTestCase(unittest.TestCase): def testCEscape(self): for escaped, escaped_utf8, unescaped in TEST_VALUES: - self.assertEquals(escaped, + self.assertEqual(escaped, text_encoding.CEscape(unescaped, as_utf8=False)) - self.assertEquals(escaped_utf8, + self.assertEqual(escaped_utf8, text_encoding.CEscape(unescaped, as_utf8=True)) def testCUnescape(self): for escaped, escaped_utf8, unescaped in TEST_VALUES: - self.assertEquals(unescaped, text_encoding.CUnescape(escaped)) - self.assertEquals(unescaped, text_encoding.CUnescape(escaped_utf8)) + self.assertEqual(unescaped, text_encoding.CUnescape(escaped)) + self.assertEqual(unescaped, text_encoding.CUnescape(escaped_utf8)) if __name__ == "__main__": diff --git a/python/google/protobuf/internal/text_format_test.py b/python/google/protobuf/internal/text_format_test.py index e8b365ff..eda38ae9 100755 --- a/python/google/protobuf/internal/text_format_test.py +++ b/python/google/protobuf/internal/text_format_test.py @@ -233,7 +233,7 @@ class TextFormatTest(unittest.TestCase): parsed_message = unittest_pb2.TestAllTypes() r = text_format.Parse(wire_text, parsed_message) self.assertIs(r, parsed_message) - self.assertEquals(message, parsed_message) + self.assertEqual(message, parsed_message) # Test as_utf8 = True. wire_text = text_format.MessageToString( @@ -241,7 +241,7 @@ class TextFormatTest(unittest.TestCase): parsed_message = unittest_pb2.TestAllTypes() r = text_format.Parse(wire_text, parsed_message) self.assertIs(r, parsed_message) - self.assertEquals(message, parsed_message, + self.assertEqual(message, parsed_message, '\n%s != %s' % (message, parsed_message)) def testPrintRawUtf8String(self): @@ -251,7 +251,7 @@ class TextFormatTest(unittest.TestCase): self.CompareToGoldenText(text, 'repeated_string: "\303\274\352\234\237"\n') parsed_message = unittest_pb2.TestAllTypes() text_format.Parse(text, parsed_message) - self.assertEquals(message, parsed_message, + self.assertEqual(message, parsed_message, '\n%s != %s' % (message, parsed_message)) def testPrintFloatFormat(self): @@ -309,7 +309,7 @@ class TextFormatTest(unittest.TestCase): message = unittest_pb2.TestAllTypes() test_util.SetAllFields(message) - self.assertEquals(message, parsed_message) + self.assertEqual(message, parsed_message) def testParseGoldenExtensions(self): golden_text = '\n'.join(self.ReadGolden( @@ -319,7 +319,7 @@ class TextFormatTest(unittest.TestCase): message = unittest_pb2.TestAllExtensions() test_util.SetAllExtensions(message) - self.assertEquals(message, parsed_message) + self.assertEqual(message, parsed_message) def testParseAllFields(self): message = unittest_pb2.TestAllTypes() @@ -360,8 +360,8 @@ class TextFormatTest(unittest.TestCase): text_format.Parse(text, message) ext1 = unittest_mset_pb2.TestMessageSetExtension1.message_set_extension ext2 = unittest_mset_pb2.TestMessageSetExtension2.message_set_extension - self.assertEquals(23, message.message_set.Extensions[ext1].i) - self.assertEquals('foo', message.message_set.Extensions[ext2].str) + self.assertEqual(23, message.message_set.Extensions[ext1].i) + self.assertEqual('foo', message.message_set.Extensions[ext2].str) def testParseExotic(self): message = unittest_pb2.TestAllTypes() @@ -408,7 +408,7 @@ class TextFormatTest(unittest.TestCase): message = unittest_pb2.TestAllTypes() text = '' text_format.Parse(text, message) - self.assertEquals(unittest_pb2.TestAllTypes(), message) + self.assertEqual(unittest_pb2.TestAllTypes(), message) def testParseInvalidUtf8(self): message = unittest_pb2.TestAllTypes() @@ -581,7 +581,7 @@ class TextFormatTest(unittest.TestCase): message = unittest_pb2.TestAllTypes() test_util.SetAllFields(message) - self.assertEquals(message, parsed_message) + self.assertEqual(message, parsed_message) def testMergeLinesGolden(self): opened = self.ReadGolden('text_format_unittest_data.txt') -- cgit v1.2.3 From 3d5aa6aef97f7ba9394f226778fdba91a9f89d59 Mon Sep 17 00:00:00 2001 From: Dan O'Reilly Date: Fri, 14 Aug 2015 16:12:34 -0400 Subject: Fix some more Python 3 compat issues Signed-off-by: Dan O'Reilly --- python/google/protobuf/internal/message_test.py | 25 +++++++++++++--------- .../google/protobuf/internal/text_format_test.py | 2 +- python/google/protobuf/text_format.py | 12 ++++++++--- 3 files changed, 25 insertions(+), 14 deletions(-) (limited to 'python/google/protobuf/internal/message_test.py') diff --git a/python/google/protobuf/internal/message_test.py b/python/google/protobuf/internal/message_test.py index 4dc92752..66356c92 100755 --- a/python/google/protobuf/internal/message_test.py +++ b/python/google/protobuf/internal/message_test.py @@ -49,6 +49,11 @@ import operator import pickle import sys +import six + +if six.PY3: + long = int + import unittest from google.protobuf.internal import _parameterized from google.protobuf import map_unittest_pb2 @@ -675,7 +680,7 @@ class MessageTest(unittest.TestCase): in the value being converted to a Unicode string.""" m = message_module.TestAllTypes() m.optional_string = str('') - self.assertTrue(isinstance(m.optional_string, unicode)) + self.assertTrue(isinstance(m.optional_string, six.text_type)) # TODO(haberman): why are these tests Google-internal only? @@ -1228,7 +1233,7 @@ class Proto3Test(unittest.TestCase): self.assertTrue('abc' in msg.map_string_string) self.assertTrue(888 in msg.map_int32_enum) - self.assertTrue(isinstance(msg.map_string_string['abc'], unicode)) + self.assertTrue(isinstance(msg.map_string_string['abc'], six.text_type)) # Accessing an unset key still throws TypeError of the type of the key # is incorrect. @@ -1311,13 +1316,13 @@ class Proto3Test(unittest.TestCase): msg.map_string_string[bytes_obj] = bytes_obj - (key, value) = msg.map_string_string.items()[0] + (key, value) = list(msg.map_string_string.items())[0] self.assertEqual(key, unicode_obj) self.assertEqual(value, unicode_obj) - self.assertTrue(isinstance(key, unicode)) - self.assertTrue(isinstance(value, unicode)) + self.assertTrue(isinstance(key, six.text_type)) + self.assertTrue(isinstance(value, six.text_type)) def testMessageMap(self): msg = map_unittest_pb2.TestMap() @@ -1502,7 +1507,7 @@ class Proto3Test(unittest.TestCase): def testMapIteration(self): msg = map_unittest_pb2.TestMap() - for k, v in msg.map_int32_int32.iteritems(): + for k, v in msg.map_int32_int32.items(): # Should not be reached. self.assertTrue(False) @@ -1512,7 +1517,7 @@ class Proto3Test(unittest.TestCase): self.assertEqual(3, len(msg.map_int32_int32)) matching_dict = {2: 4, 3: 6, 4: 8} - self.assertMapIterEquals(msg.map_int32_int32.iteritems(), matching_dict) + self.assertMapIterEquals(msg.map_int32_int32.items(), matching_dict) def testMapIterationClearMessage(self): # Iterator needs to work even if message and map are deleted. @@ -1522,7 +1527,7 @@ class Proto3Test(unittest.TestCase): msg.map_int32_int32[3] = 6 msg.map_int32_int32[4] = 8 - it = msg.map_int32_int32.iteritems() + it = msg.map_int32_int32.items() del msg matching_dict = {2: 4, 3: 6, 4: 8} @@ -1550,7 +1555,7 @@ class Proto3Test(unittest.TestCase): msg.ClearField('map_int32_int32') matching_dict = {2: 4, 3: 6, 4: 8} - self.assertMapIterEquals(map.iteritems(), matching_dict) + self.assertMapIterEquals(map.items(), matching_dict) def testMapIterValidAfterFieldCleared(self): # Map iterator needs to work even if field is cleared. @@ -1562,7 +1567,7 @@ class Proto3Test(unittest.TestCase): msg.map_int32_int32[3] = 6 msg.map_int32_int32[4] = 8 - it = msg.map_int32_int32.iteritems() + it = msg.map_int32_int32.items() msg.ClearField('map_int32_int32') matching_dict = {2: 4, 3: 6, 4: 8} diff --git a/python/google/protobuf/internal/text_format_test.py b/python/google/protobuf/internal/text_format_test.py index 55b32249..49e6332c 100755 --- a/python/google/protobuf/internal/text_format_test.py +++ b/python/google/protobuf/internal/text_format_test.py @@ -101,7 +101,7 @@ class TextFormatTest(TextFormatBase): 'repeated_string: "\\303\\274\\352\\234\\237"\n') def testPrintExoticUnicodeSubclass(self, message_module): - class UnicodeSub(unicode): + class UnicodeSub(six.text_type): pass message = message_module.TestAllTypes() message.repeated_string.append(UnicodeSub(u'\u00fc\ua71f')) diff --git a/python/google/protobuf/text_format.py b/python/google/protobuf/text_format.py index d4c4610f..5e4d10b1 100755 --- a/python/google/protobuf/text_format.py +++ b/python/google/protobuf/text_format.py @@ -92,7 +92,10 @@ def MessageToString(message, as_utf8=False, as_one_line=False, Returns: A string of the text formatted protocol buffer message. """ - out = io.BytesIO() + if as_utf8: + out = io.BytesIO() + else: + out = io.BytesIO() PrintMessage(message, out, as_utf8=as_utf8, as_one_line=as_one_line, pointy_brackets=pointy_brackets, use_index_order=use_index_order, @@ -139,7 +142,6 @@ def PrintMessage(message, out, indent=0, as_utf8=False, as_one_line=False, use_index_order=use_index_order, float_format=float_format) - def PrintField(field, value, out, indent=0, as_utf8=False, as_one_line=False, pointy_brackets=False, use_index_order=False, float_format=None): """Print a single field name/value pair. For repeated fields, the value @@ -160,7 +162,11 @@ def PrintField(field, value, out, indent=0, as_utf8=False, as_one_line=False, # For groups, use the capitalized name. out.write(field.message_type.name) else: - out.write(field.name) + if isinstance(field.name, six.text_type): + name = field.name.encode('utf-8') + else: + name = field.name + out.write(name) if field.cpp_type != descriptor.FieldDescriptor.CPPTYPE_MESSAGE: # The colon is optional in this case, but our cross-language golden files -- cgit v1.2.3 From 2621c8aefbfefd517a3facc6dc0e0dc45ae5eb87 Mon Sep 17 00:00:00 2001 From: Dan O'Reilly Date: Fri, 14 Aug 2015 22:54:53 -0400 Subject: Get Python 2.6 working. Signed-off-by: Dan O'Reilly --- python/google/protobuf/internal/_parameterized.py | 5 +++- .../protobuf/internal/descriptor_database_test.py | 5 +++- .../protobuf/internal/descriptor_pool_test.py | 6 ++-- python/google/protobuf/internal/descriptor_test.py | 10 +++++-- python/google/protobuf/internal/generator_test.py | 7 +++-- .../protobuf/internal/message_factory_test.py | 5 +++- python/google/protobuf/internal/message_test.py | 21 +++++++------ .../google/protobuf/internal/proto_builder_test.py | 13 ++++++-- python/google/protobuf/internal/reflection_test.py | 16 +++------- .../protobuf/internal/service_reflection_test.py | 5 +++- .../protobuf/internal/symbol_database_test.py | 5 +++- .../google/protobuf/internal/text_encoding_test.py | 5 +++- .../google/protobuf/internal/text_format_test.py | 35 ++++++++++++---------- .../protobuf/internal/unknown_fields_test.py | 16 +++------- .../google/protobuf/internal/wire_format_test.py | 5 +++- python/google/protobuf/proto_builder.py | 7 +++-- python/setup.py | 7 ++++- 17 files changed, 104 insertions(+), 69 deletions(-) (limited to 'python/google/protobuf/internal/message_test.py') diff --git a/python/google/protobuf/internal/_parameterized.py b/python/google/protobuf/internal/_parameterized.py index 3002b230..6c5a2bac 100755 --- a/python/google/protobuf/internal/_parameterized.py +++ b/python/google/protobuf/internal/_parameterized.py @@ -149,7 +149,10 @@ import collections import functools import re import types -import unittest +try: + import unittest2 as unittest +except ImportError: + import unittest import uuid import six diff --git a/python/google/protobuf/internal/descriptor_database_test.py b/python/google/protobuf/internal/descriptor_database_test.py index 3241cb72..1baff7d1 100644 --- a/python/google/protobuf/internal/descriptor_database_test.py +++ b/python/google/protobuf/internal/descriptor_database_test.py @@ -34,7 +34,10 @@ __author__ = 'matthewtoia@google.com (Matt Toia)' -import unittest +try: + import unittest2 as unittest +except ImportError: + import unittest from google.protobuf import descriptor_pb2 from google.protobuf.internal import factory_test2_pb2 from google.protobuf import descriptor_database diff --git a/python/google/protobuf/internal/descriptor_pool_test.py b/python/google/protobuf/internal/descriptor_pool_test.py index 64b5d172..2a482fba 100644 --- a/python/google/protobuf/internal/descriptor_pool_test.py +++ b/python/google/protobuf/internal/descriptor_pool_test.py @@ -35,9 +35,11 @@ __author__ = 'matthewtoia@google.com (Matt Toia)' import os -import unittest +try: + import unittest2 as unittest +except ImportError: + import unittest -import unittest from google.protobuf import unittest_pb2 from google.protobuf import descriptor_pb2 from google.protobuf.internal import api_implementation diff --git a/python/google/protobuf/internal/descriptor_test.py b/python/google/protobuf/internal/descriptor_test.py index a40ec0e4..34843a61 100755 --- a/python/google/protobuf/internal/descriptor_test.py +++ b/python/google/protobuf/internal/descriptor_test.py @@ -36,7 +36,6 @@ __author__ = 'robinson@google.com (Will Robinson)' import sys -import unittest from google.protobuf import unittest_custom_options_pb2 from google.protobuf import unittest_import_pb2 from google.protobuf import unittest_pb2 @@ -46,6 +45,11 @@ from google.protobuf import descriptor from google.protobuf import symbol_database from google.protobuf import text_format +try: + import unittest2 as unittest +except ImportError: + import unittest + TEST_EMPTY_MESSAGE_DESCRIPTOR_ASCII = """ name: 'TestEmptyMessage' @@ -455,7 +459,7 @@ class GeneratedDescriptorTest(unittest.TestCase): # properties of an immutable abc.Mapping. self.assertGreater(len(mapping), 0) # Sized self.assertEqual(len(mapping), len(list(mapping))) # Iterable - if sys.version_info.major >= 3: + if sys.version_info >= (3,): key, item = next(iter(mapping.items())) else: key, item = mapping.items()[0] @@ -464,7 +468,7 @@ class GeneratedDescriptorTest(unittest.TestCase): # keys(), iterkeys() &co item = (next(iter(mapping.keys())), next(iter(mapping.values()))) self.assertEqual(item, next(iter(mapping.items()))) - if sys.version_info.major < 3: + if sys.version_info < (3,): def CheckItems(seq, iterator): self.assertEqual(next(iterator), seq[0]) self.assertEqual(list(iterator), seq[1:]) diff --git a/python/google/protobuf/internal/generator_test.py b/python/google/protobuf/internal/generator_test.py index f6135fb9..bdd7382a 100755 --- a/python/google/protobuf/internal/generator_test.py +++ b/python/google/protobuf/internal/generator_test.py @@ -41,7 +41,10 @@ further ensures that we can use Python protocol message objects as we expect. __author__ = 'robinson@google.com (Will Robinson)' -import unittest +try: + import unittest2 as unittest +except ImportError: + import unittest from google.protobuf.internal import test_bad_identifiers_pb2 from google.protobuf import unittest_custom_options_pb2 from google.protobuf import unittest_import_pb2 @@ -153,7 +156,7 @@ class GeneratorTest(unittest.TestCase): # extension and for its value to be set to -789. def testNestedTypes(self): - self.assertEquals( + self.assertEqual( set(unittest_pb2.TestAllTypes.DESCRIPTOR.nested_types), set([ unittest_pb2.TestAllTypes.NestedMessage.DESCRIPTOR, diff --git a/python/google/protobuf/internal/message_factory_test.py b/python/google/protobuf/internal/message_factory_test.py index 27a3f08b..0d880a75 100644 --- a/python/google/protobuf/internal/message_factory_test.py +++ b/python/google/protobuf/internal/message_factory_test.py @@ -34,7 +34,10 @@ __author__ = 'matthewtoia@google.com (Matt Toia)' -import unittest +try: + import unittest2 as unittest +except ImportError: + import unittest from google.protobuf import descriptor_pb2 from google.protobuf.internal import factory_test1_pb2 from google.protobuf.internal import factory_test2_pb2 diff --git a/python/google/protobuf/internal/message_test.py b/python/google/protobuf/internal/message_test.py index 66356c92..cf3fcfe9 100755 --- a/python/google/protobuf/internal/message_test.py +++ b/python/google/protobuf/internal/message_test.py @@ -54,7 +54,10 @@ import six if six.PY3: long = int -import unittest +try: + import unittest2 as unittest +except ImportError: + import unittest from google.protobuf.internal import _parameterized from google.protobuf import map_unittest_pb2 from google.protobuf import unittest_pb2 @@ -324,7 +327,7 @@ class MessageTest(unittest.TestCase): def testHighPrecisionFloatPrinting(self, message_module): message = message_module.TestAllTypes() message.optional_double = 0.12345678912345678 - if sys.version_info.major >= 3: + if sys.version_info >= (3,): self.assertEqual(str(message), 'optional_double: 0.12345678912345678\n') else: self.assertEqual(str(message), 'optional_double: 0.123456789123\n') @@ -443,7 +446,7 @@ class MessageTest(unittest.TestCase): message.repeated_nested_message.sort(key=get_bb, reverse=True) self.assertEqual([k.bb for k in message.repeated_nested_message], [6, 5, 4, 3, 2, 1]) - if sys.version_info.major >= 3: return # No cmp sorting in PY3. + if sys.version_info >= (3,): return # No cmp sorting in PY3. message.repeated_nested_message.sort(sort_function=cmp_bb) self.assertEqual([k.bb for k in message.repeated_nested_message], [1, 2, 3, 4, 5, 6]) @@ -462,7 +465,7 @@ class MessageTest(unittest.TestCase): self.assertEqual(list(message.repeated_int32), [-1, -2, -3]) message.repeated_int32.sort(key=abs, reverse=True) self.assertEqual(list(message.repeated_int32), [-3, -2, -1]) - if sys.version_info.major < 3: # No cmp sorting in PY3. + if sys.version_info < (3,): # No cmp sorting in PY3. abs_cmp = lambda a, b: cmp(abs(a), abs(b)) message.repeated_int32.sort(sort_function=abs_cmp) self.assertEqual(list(message.repeated_int32), [-1, -2, -3]) @@ -476,7 +479,7 @@ class MessageTest(unittest.TestCase): self.assertEqual(list(message.repeated_string), ['c', 'bb', 'aaa']) message.repeated_string.sort(key=len, reverse=True) self.assertEqual(list(message.repeated_string), ['aaa', 'bb', 'c']) - if sys.version_info.major < 3: # No cmp sorting in PY3. + if sys.version_info < (3,): # No cmp sorting in PY3. len_cmp = lambda a, b: cmp(len(a), len(b)) message.repeated_string.sort(sort_function=len_cmp) self.assertEqual(list(message.repeated_string), ['c', 'bb', 'aaa']) @@ -499,7 +502,7 @@ class MessageTest(unittest.TestCase): m2.repeated_nested_message.add().bb = 2 m2.repeated_nested_message.add().bb = 3 - if sys.version_info.major >= 3: return # No cmp() in PY3. + if sys.version_info >= (3,): return # No cmp() in PY3. # These comparisons should not raise errors. _ = m1 < m2 @@ -1248,14 +1251,14 @@ class Proto3Test(unittest.TestCase): msg = map_unittest_pb2.TestMap() self.assertIsNone(msg.map_int32_int32.get(5)) - self.assertEquals(10, msg.map_int32_int32.get(5, 10)) + self.assertEqual(10, msg.map_int32_int32.get(5, 10)) self.assertIsNone(msg.map_int32_int32.get(5)) msg.map_int32_int32[5] = 15 - self.assertEquals(15, msg.map_int32_int32.get(5)) + self.assertEqual(15, msg.map_int32_int32.get(5)) self.assertIsNone(msg.map_int32_foreign_message.get(5)) - self.assertEquals(10, msg.map_int32_foreign_message.get(5, 10)) + self.assertEqual(10, msg.map_int32_foreign_message.get(5, 10)) submsg = msg.map_int32_foreign_message[5] self.assertIs(submsg, msg.map_int32_foreign_message.get(5)) diff --git a/python/google/protobuf/internal/proto_builder_test.py b/python/google/protobuf/internal/proto_builder_test.py index edaf3fa3..1eda10fb 100644 --- a/python/google/protobuf/internal/proto_builder_test.py +++ b/python/google/protobuf/internal/proto_builder_test.py @@ -32,8 +32,15 @@ """Tests for google.protobuf.proto_builder.""" -import collections -import unittest +try: + from collections import OrderedDict +except ImportError: + from ordereddict import OrderedDict #PY26 + +try: + import unittest2 as unittest #PY26 +except ImportError: + import unittest from google.protobuf import descriptor_pb2 from google.protobuf import descriptor_pool @@ -44,7 +51,7 @@ from google.protobuf import text_format class ProtoBuilderTest(unittest.TestCase): def setUp(self): - self.ordered_fields = collections.OrderedDict([ + self.ordered_fields = OrderedDict([ ('foo', descriptor_pb2.FieldDescriptorProto.TYPE_INT64), ('bar', descriptor_pb2.FieldDescriptorProto.TYPE_STRING), ]) diff --git a/python/google/protobuf/internal/reflection_test.py b/python/google/protobuf/internal/reflection_test.py index 9fe3abee..8967dc2e 100755 --- a/python/google/protobuf/internal/reflection_test.py +++ b/python/google/protobuf/internal/reflection_test.py @@ -39,18 +39,10 @@ import copy import gc import operator import struct -import unittest try: - from unittest import skipIf + import unittest2 as unittest except ImportError: - def skipIf(predicate, message): - def decorator(wrapped): - if predicate: - def _noop(*args, **kw): - pass - return _noop - return wrapped - return decorator + import unittest import six @@ -1634,7 +1626,7 @@ class ReflectionTest(unittest.TestCase): self.assertFalse(proto.IsInitialized(errors)) self.assertEqual(errors, ['a', 'b', 'c']) - @skipIf( + @unittest.skipIf( api_implementation.Type() != 'cpp' or api_implementation.Version() != 2, 'Errors are only available from the most recent C++ implementation.') def testFileDescriptorErrors(self): @@ -2835,7 +2827,7 @@ class OptionsTest(unittest.TestCase): class ClassAPITest(unittest.TestCase): - @skipIf( + @unittest.skipIf( api_implementation.Type() == 'cpp' and api_implementation.Version() == 2, 'C++ implementation requires a call to MakeDescriptor()') def testMakeClassWithNestedDescriptor(self): diff --git a/python/google/protobuf/internal/service_reflection_test.py b/python/google/protobuf/internal/service_reflection_test.py index 9967255a..d7cd591b 100755 --- a/python/google/protobuf/internal/service_reflection_test.py +++ b/python/google/protobuf/internal/service_reflection_test.py @@ -34,7 +34,10 @@ __author__ = 'petar@google.com (Petar Petrov)' -import unittest +try: + import unittest2 as unittest +except ImportError: + import unittest from google.protobuf import unittest_pb2 from google.protobuf import service_reflection from google.protobuf import service diff --git a/python/google/protobuf/internal/symbol_database_test.py b/python/google/protobuf/internal/symbol_database_test.py index b2489cdb..97442262 100644 --- a/python/google/protobuf/internal/symbol_database_test.py +++ b/python/google/protobuf/internal/symbol_database_test.py @@ -32,7 +32,10 @@ """Tests for google.protobuf.symbol_database.""" -import unittest +try: + import unittest2 as unittest +except ImportError: + import unittest from google.protobuf import unittest_pb2 from google.protobuf import symbol_database diff --git a/python/google/protobuf/internal/text_encoding_test.py b/python/google/protobuf/internal/text_encoding_test.py index 9e7b9ce4..338a287b 100755 --- a/python/google/protobuf/internal/text_encoding_test.py +++ b/python/google/protobuf/internal/text_encoding_test.py @@ -32,7 +32,10 @@ """Tests for google.protobuf.text_encoding.""" -import unittest +try: + import unittest2 as unittest +except ImportError: + import unittest from google.protobuf import text_encoding TEST_VALUES = [ diff --git a/python/google/protobuf/internal/text_format_test.py b/python/google/protobuf/internal/text_format_test.py index 49e6332c..67d08dfe 100755 --- a/python/google/protobuf/internal/text_format_test.py +++ b/python/google/protobuf/internal/text_format_test.py @@ -38,7 +38,10 @@ import re import six -import unittest +try: + import unittest2 as unittest +except ImportError: + import unittest from google.protobuf.internal import _parameterized from google.protobuf import map_unittest_pb2 @@ -62,7 +65,7 @@ class TextFormatBase(unittest.TestCase): self.assertMultiLineEqual(text, ''.join(golden_lines)) def CompareToGoldenText(self, text, golden_text): - self.assertMultiLineEqual(text, golden_text) + self.assertEqual(text, golden_text) def RemoveRedundantZeros(self, text): # Some platforms print 1e+5 as 1e+005. This is fine, but we need to remove @@ -218,13 +221,13 @@ class TextFormatTest(TextFormatBase): text_message = text_format.MessageToString(message, float_format='.15g') self.CompareToGoldenText( self.RemoveRedundantZeros(text_message), - 'payload {{\n {}\n {}\n {}\n {}\n}}\n'.format(*formatted_fields)) + 'payload {{\n {0}\n {1}\n {2}\n {3}\n}}\n'.format(*formatted_fields)) # as_one_line=True is a separate code branch where float_format is passed. text_message = text_format.MessageToString(message, as_one_line=True, float_format='.15g') self.CompareToGoldenText( self.RemoveRedundantZeros(text_message), - 'payload {{ {} {} {} {} }}'.format(*formatted_fields)) + 'payload {{ {0} {1} {2} {3} }}'.format(*formatted_fields)) def testMessageToString(self, message_module): message = message_module.ForeignMessage() @@ -297,7 +300,7 @@ class TextFormatTest(TextFormatBase): def testParseSingleWord(self, message_module): message = message_module.TestAllTypes() text = 'foo' - self.assertRaisesRegexp( + six.assertRaisesRegex(self, text_format.ParseError, (r'1:1 : Message type "\w+.TestAllTypes" has no field named ' r'"foo".'), @@ -306,7 +309,7 @@ class TextFormatTest(TextFormatBase): def testParseUnknownField(self, message_module): message = message_module.TestAllTypes() text = 'unknown_field: 8\n' - self.assertRaisesRegexp( + six.assertRaisesRegex(self, text_format.ParseError, (r'1:1 : Message type "\w+.TestAllTypes" has no field named ' r'"unknown_field".'), @@ -315,7 +318,7 @@ class TextFormatTest(TextFormatBase): def testParseBadEnumValue(self, message_module): message = message_module.TestAllTypes() text = 'optional_nested_enum: BARR' - self.assertRaisesRegexp( + six.assertRaisesRegex(self, text_format.ParseError, (r'1:23 : Enum type "\w+.TestAllTypes.NestedEnum" ' r'has no value named BARR.'), @@ -323,7 +326,7 @@ class TextFormatTest(TextFormatBase): message = message_module.TestAllTypes() text = 'optional_nested_enum: 100' - self.assertRaisesRegexp( + six.assertRaisesRegex(self, text_format.ParseError, (r'1:23 : Enum type "\w+.TestAllTypes.NestedEnum" ' r'has no value with number 100.'), @@ -332,7 +335,7 @@ class TextFormatTest(TextFormatBase): def testParseBadIntValue(self, message_module): message = message_module.TestAllTypes() text = 'optional_int32: bork' - self.assertRaisesRegexp( + six.assertRaisesRegex(self, text_format.ParseError, ('1:17 : Couldn\'t parse integer: bork'), text_format.Parse, text, message) @@ -596,12 +599,12 @@ class Proto2Tests(TextFormatBase): def testParseBadExtension(self): message = unittest_pb2.TestAllExtensions() text = '[unknown_extension]: 8\n' - self.assertRaisesRegexp( + six.assertRaisesRegex(self, text_format.ParseError, '1:2 : Extension "unknown_extension" not registered.', text_format.Parse, text, message) message = unittest_pb2.TestAllTypes() - self.assertRaisesRegexp( + six.assertRaisesRegex(self, text_format.ParseError, ('1:2 : Message type "protobuf_unittest.TestAllTypes" does not have ' 'extensions.'), @@ -620,7 +623,7 @@ class Proto2Tests(TextFormatBase): message = unittest_pb2.TestAllExtensions() text = ('[protobuf_unittest.optional_int32_extension]: 42 ' '[protobuf_unittest.optional_int32_extension]: 67') - self.assertRaisesRegexp( + six.assertRaisesRegex(self, text_format.ParseError, ('1:96 : Message type "protobuf_unittest.TestAllExtensions" ' 'should not have multiple ' @@ -631,7 +634,7 @@ class Proto2Tests(TextFormatBase): message = unittest_pb2.TestAllTypes() text = ('optional_nested_message { bb: 1 } ' 'optional_nested_message { bb: 2 }') - self.assertRaisesRegexp( + six.assertRaisesRegex(self, text_format.ParseError, ('1:65 : Message type "protobuf_unittest.TestAllTypes.NestedMessage" ' 'should not have multiple "bb" fields.'), @@ -641,7 +644,7 @@ class Proto2Tests(TextFormatBase): message = unittest_pb2.TestAllTypes() text = ('optional_int32: 42 ' 'optional_int32: 67') - self.assertRaisesRegexp( + six.assertRaisesRegex(self, text_format.ParseError, ('1:36 : Message type "protobuf_unittest.TestAllTypes" should not ' 'have multiple "optional_int32" fields.'), @@ -650,11 +653,11 @@ class Proto2Tests(TextFormatBase): def testParseGroupNotClosed(self): message = unittest_pb2.TestAllTypes() text = 'RepeatedGroup: <' - self.assertRaisesRegexp( + six.assertRaisesRegex(self, text_format.ParseError, '1:16 : Expected ">".', text_format.Parse, text, message) text = 'RepeatedGroup: {' - self.assertRaisesRegexp( + six.assertRaisesRegex(self, text_format.ParseError, '1:16 : Expected "}".', text_format.Parse, text, message) diff --git a/python/google/protobuf/internal/unknown_fields_test.py b/python/google/protobuf/internal/unknown_fields_test.py index 5cd23d78..1b5d7bc0 100755 --- a/python/google/protobuf/internal/unknown_fields_test.py +++ b/python/google/protobuf/internal/unknown_fields_test.py @@ -35,18 +35,10 @@ __author__ = 'bohdank@google.com (Bohdan Koval)' -import unittest try: - from unittest import skipIf + import unittest2 as unittest except ImportError: - def skipIf(predicate, message): - def decorator(wrapped): - if predicate: - def _noop(*args, **kw): - pass - return _noop - return wrapped - return decorator + import unittest from google.protobuf import unittest_mset_pb2 from google.protobuf import unittest_pb2 @@ -129,7 +121,7 @@ class UnknownFieldsTest(unittest.TestCase): self.assertNotEqual(self.empty_message, message) -@skipIf( +@unittest.skipIf( api_implementation.Type() == 'cpp' and api_implementation.Version() == 2, 'C++ implementation does not expose unknown fields to Python') class UnknownFieldsAccessorsTest(unittest.TestCase): @@ -217,7 +209,7 @@ class UnknownFieldsAccessorsTest(unittest.TestCase): -@skipIf( +@unittest.skipIf( api_implementation.Type() == 'cpp' and api_implementation.Version() == 2, 'C++ implementation does not expose unknown fields to Python') class UnknownEnumValuesTest(unittest.TestCase): diff --git a/python/google/protobuf/internal/wire_format_test.py b/python/google/protobuf/internal/wire_format_test.py index 78dc1167..f659d18e 100755 --- a/python/google/protobuf/internal/wire_format_test.py +++ b/python/google/protobuf/internal/wire_format_test.py @@ -34,7 +34,10 @@ __author__ = 'robinson@google.com (Will Robinson)' -import unittest +try: + import unittest2 as unittest +except ImportError: + import unittest from google.protobuf import message from google.protobuf.internal import wire_format diff --git a/python/google/protobuf/proto_builder.py b/python/google/protobuf/proto_builder.py index 7489cf63..700e3c25 100644 --- a/python/google/protobuf/proto_builder.py +++ b/python/google/protobuf/proto_builder.py @@ -30,7 +30,10 @@ """Dynamic Protobuf class creator.""" -import collections +try: + from collections import OrderedDict +except ImportError: + from ordereddict import OrderedDict #PY26 import hashlib import os @@ -80,7 +83,7 @@ def MakeSimpleProtoClass(fields, full_name, pool=None): # an OrderedDict we keep the order, but otherwise we sort the field to ensure # consistent ordering. field_items = fields.items() - if not isinstance(fields, collections.OrderedDict): + if not isinstance(fields, OrderedDict): field_items = sorted(field_items) # Use a consistent file name that is unlikely to conflict with any imported diff --git a/python/setup.py b/python/setup.py index bb8a7d05..79e23698 100755 --- a/python/setup.py +++ b/python/setup.py @@ -158,6 +158,11 @@ if __name__ == '__main__': ) os.environ['PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION'] = 'cpp' + install_requires = ['six', 'setuptools'] + if sys.version_info <= (2,7): + install_requires.append('ordereddict') + install_requires.append('unittest2') + setup( name='protobuf', version=GetVersion(), @@ -187,6 +192,6 @@ if __name__ == '__main__': 'clean': clean, 'build_py': build_py, }, - install_requires=['setuptools', 'six'], + install_requires=install_requires, ext_modules=ext_module_list, ) -- cgit v1.2.3 From 821fcb2ded668a688316b66fcd5ff28e868298e7 Mon Sep 17 00:00:00 2001 From: Tamir Duberstein Date: Wed, 12 Aug 2015 14:22:25 -0400 Subject: Use assertIsInstance --- python/google/protobuf/internal/message_test.py | 19 ++++++++----------- python/google/protobuf/internal/reflection_test.py | 6 +++--- .../protobuf/internal/service_reflection_test.py | 5 ++--- 3 files changed, 13 insertions(+), 17 deletions(-) (limited to 'python/google/protobuf/internal/message_test.py') diff --git a/python/google/protobuf/internal/message_test.py b/python/google/protobuf/internal/message_test.py index cf3fcfe9..c4c660ec 100755 --- a/python/google/protobuf/internal/message_test.py +++ b/python/google/protobuf/internal/message_test.py @@ -683,9 +683,7 @@ class MessageTest(unittest.TestCase): in the value being converted to a Unicode string.""" m = message_module.TestAllTypes() m.optional_string = str('') - self.assertTrue(isinstance(m.optional_string, six.text_type)) - -# TODO(haberman): why are these tests Google-internal only? + self.assertIsInstance(m.optional_string, six.text_type) def testLongValuedSlice(self, message_module): """It should be possible to use long-valued indicies in slices @@ -1071,14 +1069,13 @@ class Proto2Test(unittest.TestCase): repeated_nested_enum=['FOO', unittest_pb2.TestAllTypes.BAR], default_int32=800, oneof_string='y') - self.assertTrue(isinstance(message, unittest_pb2.TestAllTypes)) + self.assertIsInstance(message, unittest_pb2.TestAllTypes) self.assertEqual(100, message.optional_int32) self.assertEqual(200, message.optional_fixed32) self.assertEqual(300.5, message.optional_float) self.assertEqual(b'x', message.optional_bytes) self.assertEqual(400, message.optionalgroup.a) - self.assertTrue(isinstance(message.optional_nested_message, - unittest_pb2.TestAllTypes.NestedMessage)) + self.assertIsInstance(message.optional_nested_message, unittest_pb2.TestAllTypes.NestedMessage) self.assertEqual(500, message.optional_nested_message.bb) self.assertEqual(unittest_pb2.TestAllTypes.BAZ, message.optional_nested_enum) @@ -1236,7 +1233,7 @@ class Proto3Test(unittest.TestCase): self.assertTrue('abc' in msg.map_string_string) self.assertTrue(888 in msg.map_int32_enum) - self.assertTrue(isinstance(msg.map_string_string['abc'], six.text_type)) + self.assertIsInstance(msg.map_string_string['abc'], six.text_type) # Accessing an unset key still throws TypeError of the type of the key # is incorrect. @@ -1315,7 +1312,7 @@ class Proto3Test(unittest.TestCase): msg = map_unittest_pb2.TestMap() unicode_obj = u'\u1234' - bytes_obj = unicode_obj.encode('utf8') + bytes_obj = unicode_obj.encode('utf8') msg.map_string_string[bytes_obj] = bytes_obj @@ -1324,8 +1321,8 @@ class Proto3Test(unittest.TestCase): self.assertEqual(key, unicode_obj) self.assertEqual(value, unicode_obj) - self.assertTrue(isinstance(key, six.text_type)) - self.assertTrue(isinstance(value, six.text_type)) + self.assertIsInstance(key, six.text_type) + self.assertIsInstance(value, six.text_type) def testMessageMap(self): msg = map_unittest_pb2.TestMap() @@ -1493,7 +1490,7 @@ class Proto3Test(unittest.TestCase): submsg = msg.map_int32_foreign_message[111] self.assertIs(submsg, msg.map_int32_foreign_message[111]) - self.assertTrue(isinstance(submsg, unittest_pb2.ForeignMessage)) + self.assertIsInstance(submsg, unittest_pb2.ForeignMessage) submsg.c = 5 diff --git a/python/google/protobuf/internal/reflection_test.py b/python/google/protobuf/internal/reflection_test.py index 1a162272..5d691bcf 100755 --- a/python/google/protobuf/internal/reflection_test.py +++ b/python/google/protobuf/internal/reflection_test.py @@ -614,10 +614,10 @@ class ReflectionTest(unittest.TestCase): def TestGetAndDeserialize(field_name, value, expected_type): proto = unittest_pb2.TestAllTypes() setattr(proto, field_name, value) - self.assertTrue(isinstance(getattr(proto, field_name), expected_type)) + self.assertIsInstance(getattr(proto, field_name), expected_type) proto2 = unittest_pb2.TestAllTypes() proto2.ParseFromString(proto.SerializeToString()) - self.assertTrue(isinstance(getattr(proto2, field_name), expected_type)) + self.assertIsInstance(getattr(proto2, field_name), expected_type) TestGetAndDeserialize('optional_int32', 1, int) TestGetAndDeserialize('optional_int32', 1 << 30, int) @@ -903,7 +903,7 @@ class ReflectionTest(unittest.TestCase): self.assertTrue(proto.repeated_nested_message) self.assertEqual(2, len(proto.repeated_nested_message)) self.assertListsEqual([m0, m1], proto.repeated_nested_message) - self.assertTrue(isinstance(m0, unittest_pb2.TestAllTypes.NestedMessage)) + self.assertIsInstance(m0, unittest_pb2.TestAllTypes.NestedMessage) # Test out-of-bounds indices. self.assertRaises(IndexError, proto.repeated_nested_message.__getitem__, diff --git a/python/google/protobuf/internal/service_reflection_test.py b/python/google/protobuf/internal/service_reflection_test.py index d7cd591b..98614b77 100755 --- a/python/google/protobuf/internal/service_reflection_test.py +++ b/python/google/protobuf/internal/service_reflection_test.py @@ -83,7 +83,7 @@ class FooUnitTest(unittest.TestCase): self.assertEqual('Method Bar not implemented.', rpc_controller.failure_message) self.assertEqual(None, self.callback_response) - + class MyServiceImpl(unittest_pb2.TestService): def Foo(self, rpc_controller, request, done): self.foo_called = True @@ -128,8 +128,7 @@ class FooUnitTest(unittest.TestCase): # Invoke method. stub.Foo(rpc_controller, request, MyCallback) - self.assertTrue(isinstance(self.callback_response, - unittest_pb2.FooResponse)) + self.assertIsInstance(self.callback_response, unittest_pb2.FooResponse) self.assertEqual(request, channel.request) self.assertEqual(rpc_controller, channel.controller) self.assertEqual(stub.GetDescriptor().methods[0], channel.method) -- cgit v1.2.3