check that exception messages are not empty (#22379)

Patch by Yongzhi Pan.
This commit is contained in:
Benjamin Peterson 2014-09-28 12:56:42 -04:00
parent 623ae29469
commit c31f12d196
4 changed files with 13 additions and 15 deletions

View File

@ -1,5 +1,5 @@
""" """
Common tests shared by test_str, test_unicode, test_userstring and test_string. Common tests shared by test_unicode, test_userstring and test_string.
""" """
import unittest, string, sys, struct import unittest, string, sys, struct
@ -79,11 +79,9 @@ class subtype(self.__class__.type2test):
def checkraises(self, exc, obj, methodname, *args): def checkraises(self, exc, obj, methodname, *args):
obj = self.fixtype(obj) obj = self.fixtype(obj)
args = self.fixtype(args) args = self.fixtype(args)
self.assertRaises( with self.assertRaises(exc) as cm:
exc, getattr(obj, methodname)(*args)
getattr(obj, methodname), self.assertNotEqual(str(cm.exception), '')
*args
)
# call obj.method(*args) without any checks # call obj.method(*args) without any checks
def checkcall(self, obj, methodname, *args): def checkcall(self, obj, methodname, *args):
@ -1119,8 +1117,7 @@ def test_mul(self):
def test_join(self): def test_join(self):
# join now works with any sequence type # join now works with any sequence type
# moved here, because the argument order is # moved here, because the argument order is
# different in string.join (see the test in # different in string.join
# test.test_string.StringTest.test_join)
self.checkequal('a b c d', ' ', 'join', ['a', 'b', 'c', 'd']) self.checkequal('a b c d', ' ', 'join', ['a', 'b', 'c', 'd'])
self.checkequal('abcd', '', 'join', ('a', 'b', 'c', 'd')) self.checkequal('abcd', '', 'join', ('a', 'b', 'c', 'd'))
self.checkequal('bd', '', 'join', ('', 'b', '', 'd')) self.checkequal('bd', '', 'join', ('', 'b', '', 'd'))
@ -1140,6 +1137,7 @@ def test_join(self):
self.checkequal('a b c', ' ', 'join', BadSeq2()) self.checkequal('a b c', ' ', 'join', BadSeq2())
self.checkraises(TypeError, ' ', 'join') self.checkraises(TypeError, ' ', 'join')
self.checkraises(TypeError, ' ', 'join', None)
self.checkraises(TypeError, ' ', 'join', 7) self.checkraises(TypeError, ' ', 'join', 7)
self.checkraises(TypeError, ' ', 'join', [1, 2, bytes()]) self.checkraises(TypeError, ' ', 'join', [1, 2, bytes()])
try: try:

View File

@ -298,6 +298,7 @@ def test_join(self):
seq = [b"abc"] * 1000 seq = [b"abc"] * 1000
expected = b"abc" + b".:abc" * 999 expected = b"abc" + b".:abc" * 999
self.assertEqual(dot_join(seq), expected) self.assertEqual(dot_join(seq), expected)
self.assertRaises(TypeError, self.type2test(b" ").join, None)
# Error handling and cleanup when some item in the middle of the # Error handling and cleanup when some item in the middle of the
# sequence has the wrong type. # sequence has the wrong type.
with self.assertRaises(TypeError): with self.assertRaises(TypeError):

View File

@ -28,14 +28,12 @@ def checkequal(self, result, object, methodname, *args, **kwargs):
realresult realresult
) )
def checkraises(self, exc, object, methodname, *args): def checkraises(self, exc, obj, methodname, *args):
object = self.fixtype(object) obj = self.fixtype(obj)
# we don't fix the arguments, because UserString can't cope with it # we don't fix the arguments, because UserString can't cope with it
self.assertRaises( with self.assertRaises(exc) as cm:
exc, getattr(obj, methodname)(*args)
getattr(object, methodname), self.assertNotEqual(str(cm.exception), '')
*args
)
def checkcall(self, object, methodname, *args): def checkcall(self, object, methodname, *args):
object = self.fixtype(object) object = self.fixtype(object)

View File

@ -1010,6 +1010,7 @@ Mike Pall
Todd R. Palmer Todd R. Palmer
Juan David Ibáñez Palomar Juan David Ibáñez Palomar
Jan Palus Jan Palus
Yongzhi Pan
Martin Panter Martin Panter
Mathias Panzenböck Mathias Panzenböck
M. Papillon M. Papillon