Skip to content

Commit 24095cc

Browse files
author
jieluo@google.com
committed
Add deleted tests back for reflection_cpp2_test.py by addtional exception catch
1 parent 5dd5f0d commit 24095cc

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed

python/google/protobuf/internal/reflection_test.py

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
import gc
4242
import operator
4343
import struct
44+
import sys
4445

4546
from google.apputils import basetest
4647
from google.protobuf import unittest_import_pb2
@@ -1556,6 +1557,20 @@ def assertInitialized(self, proto):
15561557

15571558
def assertNotInitialized(self, proto):
15581559
self.assertFalse(proto.IsInitialized())
1560+
try:
1561+
proto.SerializeToString()
1562+
except message.EncodeError:
1563+
return
1564+
except:
1565+
# C++ implementation in opensource do not consider the catched
1566+
# exception google.protobuf.message.EncodeError same as
1567+
# message.EncodeError. Add an additional catch to deal with it.
1568+
if api_implementation.Type() == 'python':
1569+
raise self.failureException('message.EncodeError not raised')
1570+
self.assertEqual('<class \'google.protobuf.message.EncodeError\'>',
1571+
str(sys.exc_info()[0]))
1572+
else:
1573+
raise self.failureException('message.EncodeError not raised')
15591574
# "Partial" serialization doesn't care if message is uninitialized.
15601575
proto.SerializePartialToString()
15611576

@@ -2485,11 +2500,23 @@ def _CheckRaises(self, exc_class, callable_obj, exception):
24852500
# Check if the exception message is the right one.
24862501
self.assertEqual(exception, str(ex))
24872502
return
2503+
except:
2504+
# C++ implementation in opensource do not consider the catched
2505+
# exception google.protobuf.message.EncodeError same as
2506+
# message.EncodeError. Add an additional catch to deal with it.
2507+
if api_implementation.Type() == 'python':
2508+
raise self.failureException('%s not raised' % str(exc_class))
2509+
self.assertEqual(exception, str(sys.exc_info()[1]))
24882510
else:
24892511
raise self.failureException('%s not raised' % str(exc_class))
24902512

24912513
def testSerializeUninitialized(self):
24922514
proto = unittest_pb2.TestRequired()
2515+
self._CheckRaises(
2516+
message.EncodeError,
2517+
proto.SerializeToString,
2518+
'Message protobuf_unittest.TestRequired is missing required fields: '
2519+
'a,b,c')
24932520
# Shouldn't raise exceptions.
24942521
partial = proto.SerializePartialToString()
24952522

@@ -2500,10 +2527,18 @@ def testSerializeUninitialized(self):
25002527
self.assertFalse(proto2.HasField('a'))
25012528

25022529
proto.a = 1
2530+
self._CheckRaises(
2531+
message.EncodeError,
2532+
proto.SerializeToString,
2533+
'Message protobuf_unittest.TestRequired is missing required fields: b,c')
25032534
# Shouldn't raise exceptions.
25042535
partial = proto.SerializePartialToString()
25052536

25062537
proto.b = 2
2538+
self._CheckRaises(
2539+
message.EncodeError,
2540+
proto.SerializeToString,
2541+
'Message protobuf_unittest.TestRequired is missing required fields: c')
25072542
# Shouldn't raise exceptions.
25082543
partial = proto.SerializePartialToString()
25092544

@@ -2533,13 +2568,25 @@ def testSerializeUninitializedSubMessage(self):
25332568
proto.SerializeToString()
25342569

25352570
proto.optional_message.a = 1
2571+
self._CheckRaises(
2572+
message.EncodeError,
2573+
proto.SerializeToString,
2574+
'Message protobuf_unittest.TestRequiredForeign '
2575+
'is missing required fields: '
2576+
'optional_message.b,optional_message.c')
25362577

25372578
proto.optional_message.b = 2
25382579
proto.optional_message.c = 3
25392580
proto.SerializeToString()
25402581

25412582
proto.repeated_message.add().a = 1
25422583
proto.repeated_message.add().b = 2
2584+
self._CheckRaises(
2585+
message.EncodeError,
2586+
proto.SerializeToString,
2587+
'Message protobuf_unittest.TestRequiredForeign is missing required fields: '
2588+
'repeated_message[0].b,repeated_message[0].c,'
2589+
'repeated_message[1].a,repeated_message[1].c')
25432590

25442591
proto.repeated_message[0].b = 2
25452592
proto.repeated_message[0].c = 3

0 commit comments

Comments
 (0)