Compatibility with Python2.6 unittest.

pull/166/head
Tres Seaver 10 years ago
parent 47ee4d37c1
commit 71edc31f23
  1. 4
      python/google/protobuf/internal/message_factory_test.py
  2. 30
      python/google/protobuf/internal/reflection_test.py
  3. 15
      python/google/protobuf/internal/unknown_fields_test.py
  4. 7
      python/setup.py

@ -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…
Cancel
Save