aboutsummaryrefslogtreecommitdiffhomepage
path: root/python
diff options
context:
space:
mode:
authorGravatar Tres Seaver <tseaver@palladion.com>2015-01-13 15:38:10 -0500
committerGravatar Tres Seaver <tseaver@palladion.com>2015-01-13 15:38:10 -0500
commit71edc31f23918ca3c0093ce9cdb38bfa0206ed94 (patch)
treecf884942a2ecf68a1c5e82aed22c748312107957 /python
parent47ee4d37c17db8e97fe5b15cf918ab56ff93bb18 (diff)
Compatibility with Python2.6 unittest.
Diffstat (limited to 'python')
-rw-r--r--python/google/protobuf/internal/message_factory_test.py4
-rwxr-xr-xpython/google/protobuf/internal/reflection_test.py30
-rwxr-xr-xpython/google/protobuf/internal/unknown_fields_test.py15
-rwxr-xr-xpython/setup.py7
4 files changed, 35 insertions, 21 deletions
diff --git a/python/google/protobuf/internal/message_factory_test.py b/python/google/protobuf/internal/message_factory_test.py
index 45ddcd26..5a344a79 100644
--- a/python/google/protobuf/internal/message_factory_test.py
+++ b/python/google/protobuf/internal/message_factory_test.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
diff --git a/python/google/protobuf/internal/reflection_test.py b/python/google/protobuf/internal/reflection_test.py
index 8a72e134..03f558fd 100755
--- a/python/google/protobuf/internal/reflection_test.py
+++ b/python/google/protobuf/internal/reflection_test.py
@@ -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):
diff --git a/python/google/protobuf/internal/unknown_fields_test.py b/python/google/protobuf/internal/unknown_fields_test.py
index 0650d92b..e405f113 100755
--- a/python/google/protobuf/internal/unknown_fields_test.py
+++ b/python/google/protobuf/internal/unknown_fields_test.py
@@ -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):
diff --git a/python/setup.py b/python/setup.py
index d916b9c5..a4015d8a 100755
--- a/python/setup.py
+++ b/python/setup.py
@@ -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 = []