Compatibility with Python2.6 unittest.
This commit is contained in:
parent
47ee4d37c1
commit
71edc31f23
@ -94,11 +94,11 @@ class MessageFactoryTest(unittest.TestCase):
|
||||
factory = message_factory.MessageFactory()
|
||||
cls = factory.GetPrototype(pool.FindMessageTypeByName(
|
||||
'google.protobuf.python.internal.Factory2Message'))
|
||||
self.assertIsNot(cls, factory_test2_pb2.Factory2Message)
|
||||
self.assertFalse(cls is factory_test2_pb2.Factory2Message)
|
||||
self._ExerciseDynamicClass(cls)
|
||||
cls2 = factory.GetPrototype(pool.FindMessageTypeByName(
|
||||
'google.protobuf.python.internal.Factory2Message'))
|
||||
self.assertIs(cls, cls2)
|
||||
self.assertTrue(cls is cls2)
|
||||
|
||||
def testGetMessages(self):
|
||||
# performed twice because multiple calls with the same input must be allowed
|
||||
|
@ -40,6 +40,17 @@ import gc
|
||||
import operator
|
||||
import struct
|
||||
import unittest
|
||||
try:
|
||||
from unittest import skipIf
|
||||
except ImportError:
|
||||
def skipIf(predicate, message):
|
||||
def decorator(wrapped):
|
||||
if predicate:
|
||||
def _noop(*args, **kw):
|
||||
pass
|
||||
return _noop
|
||||
return wrapped
|
||||
return decorator
|
||||
|
||||
import six
|
||||
|
||||
@ -1623,7 +1634,7 @@ class ReflectionTest(unittest.TestCase):
|
||||
self.assertFalse(proto.IsInitialized(errors))
|
||||
self.assertEqual(errors, ['a', 'b', 'c'])
|
||||
|
||||
@unittest.skipIf(
|
||||
@skipIf(
|
||||
api_implementation.Type() != 'cpp' or api_implementation.Version() != 2,
|
||||
'Errors are only available from the most recent C++ implementation.')
|
||||
def testFileDescriptorErrors(self):
|
||||
@ -1644,18 +1655,17 @@ class ReflectionTest(unittest.TestCase):
|
||||
file_descriptor_proto.name = another_file_name
|
||||
m2 = file_descriptor_proto.message_type.add()
|
||||
m2.name = 'msg2'
|
||||
with self.assertRaises(TypeError) as cm:
|
||||
try:
|
||||
descriptor.FileDescriptor(
|
||||
another_file_name,
|
||||
package_name,
|
||||
serialized_pb=file_descriptor_proto.SerializeToString())
|
||||
self.assertTrue(hasattr(cm, 'exception'), '%s not raised' %
|
||||
getattr(cm.expected, '__name__', cm.expected))
|
||||
self.assertIn('test_file_descriptor_errors.proto', str(cm.exception))
|
||||
# Error message will say something about this definition being a
|
||||
# duplicate, though we don't check the message exactly to avoid a
|
||||
# dependency on the C++ logging code.
|
||||
self.assertIn('test_file_descriptor_errors.msg1', str(cm.exception))
|
||||
except TypeError as e:
|
||||
message = str(e)
|
||||
else:
|
||||
self.fail("Did not raise TypeError")
|
||||
|
||||
self.assertTrue('test_file_descriptor_errors.proto' in message)
|
||||
|
||||
def testStringUTF8Encoding(self):
|
||||
proto = unittest_pb2.TestAllTypes()
|
||||
@ -2824,7 +2834,7 @@ class OptionsTest(unittest.TestCase):
|
||||
|
||||
class ClassAPITest(unittest.TestCase):
|
||||
|
||||
@unittest.skipIf(
|
||||
@skipIf(
|
||||
api_implementation.Type() == 'cpp' and api_implementation.Version() == 2,
|
||||
'C++ implementation requires a call to MakeDescriptor()')
|
||||
def testMakeClassWithNestedDescriptor(self):
|
||||
|
@ -36,6 +36,17 @@
|
||||
__author__ = 'bohdank@google.com (Bohdan Koval)'
|
||||
|
||||
import unittest
|
||||
try:
|
||||
from unittest import skipIf
|
||||
except ImportError:
|
||||
def skipIf(predicate, message):
|
||||
def decorator(wrapped):
|
||||
if predicate:
|
||||
def _noop(*args, **kw):
|
||||
pass
|
||||
return _noop
|
||||
return wrapped
|
||||
return decorator
|
||||
|
||||
from google.protobuf import unittest_mset_pb2
|
||||
from google.protobuf import unittest_pb2
|
||||
@ -46,7 +57,7 @@ from google.protobuf.internal import test_util
|
||||
from google.protobuf.internal import type_checkers
|
||||
|
||||
|
||||
@unittest.skipIf(
|
||||
@skipIf(
|
||||
api_implementation.Type() == 'cpp' and api_implementation.Version() == 2,
|
||||
'C++ implementation does not expose unknown fields to Python')
|
||||
class UnknownFieldsTest(unittest.TestCase):
|
||||
@ -180,7 +191,7 @@ class UnknownFieldsTest(unittest.TestCase):
|
||||
self.assertNotEqual(self.empty_message, message)
|
||||
|
||||
|
||||
@unittest.skipIf(
|
||||
@skipIf(
|
||||
api_implementation.Type() == 'cpp' and api_implementation.Version() == 2,
|
||||
'C++ implementation does not expose unknown fields to Python')
|
||||
class UnknownEnumValuesTest(unittest.TestCase):
|
||||
|
@ -135,13 +135,6 @@ class build_py(_build_py):
|
||||
pass
|
||||
# _build_py is an old-style class, so super() doesn't work.
|
||||
_build_py.run(self)
|
||||
# TODO(mrovner): Subclass to run 2to3 on some files only.
|
||||
# Tracing what https://wiki.python.org/moin/PortingPythonToPy3k's "Approach 2"
|
||||
# section on how to get 2to3 to run on source files during install under
|
||||
# Python 3. This class seems like a good place to put logic that calls
|
||||
# python3's distutils.util.run_2to3 on the subset of the files we have in our
|
||||
# release that are subject to conversion.
|
||||
# See code reference in previous code review.
|
||||
|
||||
if __name__ == '__main__':
|
||||
ext_module_list = []
|
||||
|
Loading…
Reference in New Issue
Block a user