Commit 1643d5cb authored by Benjamin Peterson's avatar Benjamin Peterson

give exception a nice message (closes #22379)

Patch by Yongzhi Pan.
parent 9ad23c6c
...@@ -65,14 +65,12 @@ class CommonTest(unittest.TestCase): ...@@ -65,14 +65,12 @@ class CommonTest(unittest.TestCase):
self.assertTrue(object is not realresult) self.assertTrue(object is not realresult)
# check that object.method(*args) raises exc # check that object.method(*args) raises exc
def checkraises(self, exc, object, methodname, *args): def checkraises(self, exc, obj, methodname, *args):
object = self.fixtype(object) 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(object, methodname), self.assertNotEqual(cm.exception.message, '')
*args
)
# call object.method(*args) without any checks # call object.method(*args) without any checks
def checkcall(self, object, methodname, *args): def checkcall(self, object, methodname, *args):
...@@ -1057,6 +1055,7 @@ class MixinStrUnicodeUserStringTest: ...@@ -1057,6 +1055,7 @@ class MixinStrUnicodeUserStringTest:
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', Sequence([7, 'hello', 123L])) self.checkraises(TypeError, ' ', 'join', Sequence([7, 'hello', 123L]))
try: try:
......
...@@ -16,13 +16,10 @@ class StringTest( ...@@ -16,13 +16,10 @@ class StringTest(
realresult realresult
) )
def checkraises(self, exc, object, methodname, *args): def checkraises(self, exc, obj, methodname, *args):
self.assertRaises( with self.assertRaises(exc) as cm:
exc, getattr(string, methodname)(obj, *args)
getattr(string, methodname), self.assertNotEqual(cm.exception.message, '')
object,
*args
)
def checkcall(self, object, methodname, *args): def checkcall(self, object, methodname, *args):
getattr(string, methodname)(object, *args) getattr(string, methodname)(object, *args)
......
...@@ -28,14 +28,12 @@ class UserStringTest( ...@@ -28,14 +28,12 @@ class UserStringTest(
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(cm.exception.message, '')
*args
)
def checkcall(self, object, methodname, *args): def checkcall(self, object, methodname, *args):
object = self.fixtype(object) object = self.fixtype(object)
......
...@@ -1007,6 +1007,7 @@ Mike Pall ...@@ -1007,6 +1007,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
Mathias Panzenböck Mathias Panzenböck
M. Papillon M. Papillon
Peter Parente Peter Parente
......
...@@ -10,6 +10,9 @@ What's New in Python 2.7.9? ...@@ -10,6 +10,9 @@ What's New in Python 2.7.9?
Core and Builtins Core and Builtins
----------------- -----------------
- Issue #22379: Fix empty exception message in a TypeError raised in
``str.join``.
- Issue #22221: Now the source encoding declaration on the second line isn't - Issue #22221: Now the source encoding declaration on the second line isn't
effective if the first line contains anything except a comment. effective if the first line contains anything except a comment.
......
...@@ -1594,7 +1594,7 @@ string_join(PyStringObject *self, PyObject *orig) ...@@ -1594,7 +1594,7 @@ string_join(PyStringObject *self, PyObject *orig)
Py_ssize_t i; Py_ssize_t i;
PyObject *seq, *item; PyObject *seq, *item;
seq = PySequence_Fast(orig, ""); seq = PySequence_Fast(orig, "can only join an iterable");
if (seq == NULL) { if (seq == NULL) {
return NULL; return NULL;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment