From 24095cc7e545d6f4044820a75fc42cbdd824cdca Mon Sep 17 00:00:00 2001 From: "jieluo@google.com" Date: Thu, 14 Aug 2014 18:04:22 +0000 Subject: [PATCH] Add deleted tests back for reflection_cpp2_test.py by addtional exception catch --- .../protobuf/internal/reflection_test.py | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/python/google/protobuf/internal/reflection_test.py b/python/google/protobuf/internal/reflection_test.py index 78a880e87..587246a73 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('', + 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