aboutsummaryrefslogtreecommitdiffhomepage
path: root/python/google/protobuf/internal/reflection_test.py
diff options
context:
space:
mode:
authorGravatar jieluo@google.com <jieluo@google.com@630680e5-0e50-0410-840e-4b1c322b438d>2014-08-14 18:04:22 +0000
committerGravatar jieluo@google.com <jieluo@google.com@630680e5-0e50-0410-840e-4b1c322b438d>2014-08-14 18:04:22 +0000
commit24095cc7e545d6f4044820a75fc42cbdd824cdca (patch)
treec5f8dd61b7fe3ce9d7a2d27b4b5a069d7db62713 /python/google/protobuf/internal/reflection_test.py
parent5dd5f0d09a52a4965d5cee35b7aad80bebb08a33 (diff)
Add deleted tests back for reflection_cpp2_test.py by addtional exception catch
Diffstat (limited to 'python/google/protobuf/internal/reflection_test.py')
-rwxr-xr-xpython/google/protobuf/internal/reflection_test.py47
1 files changed, 47 insertions, 0 deletions
diff --git a/python/google/protobuf/internal/reflection_test.py b/python/google/protobuf/internal/reflection_test.py
index 78a880e8..587246a7 100755
--- a/python/google/protobuf/internal/reflection_test.py
+++ b/python/google/protobuf/internal/reflection_test.py
@@ -41,6 +41,7 @@ import copy
import gc
import operator
import struct
+import sys
from google.apputils import basetest
from google.protobuf import unittest_import_pb2
@@ -1556,6 +1557,20 @@ class ReflectionTest(basetest.TestCase):
def assertNotInitialized(self, proto):
self.assertFalse(proto.IsInitialized())
+ try:
+ proto.SerializeToString()
+ except message.EncodeError:
+ return
+ except:
+ # C++ implementation in opensource do not consider the catched
+ # exception google.protobuf.message.EncodeError same as
+ # message.EncodeError. Add an additional catch to deal with it.
+ if api_implementation.Type() == 'python':
+ raise self.failureException('message.EncodeError not raised')
+ self.assertEqual('<class \'google.protobuf.message.EncodeError\'>',
+ str(sys.exc_info()[0]))
+ else:
+ raise self.failureException('message.EncodeError not raised')
# "Partial" serialization doesn't care if message is uninitialized.
proto.SerializePartialToString()
@@ -2485,11 +2500,23 @@ class SerializationTest(basetest.TestCase):
# Check if the exception message is the right one.
self.assertEqual(exception, str(ex))
return
+ except:
+ # C++ implementation in opensource do not consider the catched
+ # exception google.protobuf.message.EncodeError same as
+ # message.EncodeError. Add an additional catch to deal with it.
+ if api_implementation.Type() == 'python':
+ raise self.failureException('%s not raised' % str(exc_class))
+ self.assertEqual(exception, str(sys.exc_info()[1]))
else:
raise self.failureException('%s not raised' % str(exc_class))
def testSerializeUninitialized(self):
proto = unittest_pb2.TestRequired()
+ self._CheckRaises(
+ message.EncodeError,
+ proto.SerializeToString,
+ 'Message protobuf_unittest.TestRequired is missing required fields: '
+ 'a,b,c')
# Shouldn't raise exceptions.
partial = proto.SerializePartialToString()
@@ -2500,10 +2527,18 @@ class SerializationTest(basetest.TestCase):
self.assertFalse(proto2.HasField('a'))
proto.a = 1
+ self._CheckRaises(
+ message.EncodeError,
+ proto.SerializeToString,
+ 'Message protobuf_unittest.TestRequired is missing required fields: b,c')
# Shouldn't raise exceptions.
partial = proto.SerializePartialToString()
proto.b = 2
+ self._CheckRaises(
+ message.EncodeError,
+ proto.SerializeToString,
+ 'Message protobuf_unittest.TestRequired is missing required fields: c')
# Shouldn't raise exceptions.
partial = proto.SerializePartialToString()
@@ -2533,6 +2568,12 @@ class SerializationTest(basetest.TestCase):
proto.SerializeToString()
proto.optional_message.a = 1
+ self._CheckRaises(
+ message.EncodeError,
+ proto.SerializeToString,
+ 'Message protobuf_unittest.TestRequiredForeign '
+ 'is missing required fields: '
+ 'optional_message.b,optional_message.c')
proto.optional_message.b = 2
proto.optional_message.c = 3
@@ -2540,6 +2581,12 @@ class SerializationTest(basetest.TestCase):
proto.repeated_message.add().a = 1
proto.repeated_message.add().b = 2
+ self._CheckRaises(
+ message.EncodeError,
+ proto.SerializeToString,
+ 'Message protobuf_unittest.TestRequiredForeign is missing required fields: '
+ 'repeated_message[0].b,repeated_message[0].c,'
+ 'repeated_message[1].a,repeated_message[1].c')
proto.repeated_message[0].b = 2
proto.repeated_message[0].c = 3