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):
self.assertTrue(object is not realresult)
# check that object.method(*args) raises exc
def checkraises(self, exc, object, methodname, *args):
object = self.fixtype(object)
def checkraises(self, exc, obj, methodname, *args):
obj = self.fixtype(obj)
args = self.fixtype(args)
self.assertRaises(
exc,
getattr(object, methodname),
*args
)
with self.assertRaises(exc) as cm:
getattr(obj, methodname)(*args)
self.assertNotEqual(cm.exception.message, '')
# call object.method(*args) without any checks
def checkcall(self, object, methodname, *args):
......@@ -1057,6 +1055,7 @@ class MixinStrUnicodeUserStringTest:
self.checkequal('a b c', ' ', 'join', BadSeq2())
self.checkraises(TypeError, ' ', 'join')
self.checkraises(TypeError, ' ', 'join', None)
self.checkraises(TypeError, ' ', 'join', 7)
self.checkraises(TypeError, ' ', 'join', Sequence([7, 'hello', 123L]))
try:
......
......@@ -16,13 +16,10 @@ class StringTest(
realresult
)
def checkraises(self, exc, object, methodname, *args):
self.assertRaises(
exc,
getattr(string, methodname),
object,
*args
)
def checkraises(self, exc, obj, methodname, *args):
with self.assertRaises(exc) as cm:
getattr(string, methodname)(obj, *args)
self.assertNotEqual(cm.exception.message, '')
def checkcall(self, object, methodname, *args):
getattr(string, methodname)(object, *args)
......
......@@ -28,14 +28,12 @@ class UserStringTest(
realresult
)
def checkraises(self, exc, object, methodname, *args):
object = self.fixtype(object)
def checkraises(self, exc, obj, methodname, *args):
obj = self.fixtype(obj)
# we don't fix the arguments, because UserString can't cope with it
self.assertRaises(
exc,
getattr(object, methodname),
*args
)
with self.assertRaises(exc) as cm:
getattr(obj, methodname)(*args)
self.assertNotEqual(cm.exception.message, '')
def checkcall(self, object, methodname, *args):
object = self.fixtype(object)
......
......@@ -1007,6 +1007,7 @@ Mike Pall
Todd R. Palmer
Juan David Ibáñez Palomar
Jan Palus
Yongzhi Pan
Mathias Panzenböck
M. Papillon
Peter Parente
......
......@@ -10,6 +10,9 @@ What's New in Python 2.7.9?
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
effective if the first line contains anything except a comment.
......
......@@ -1594,7 +1594,7 @@ string_join(PyStringObject *self, PyObject *orig)
Py_ssize_t i;
PyObject *seq, *item;
seq = PySequence_Fast(orig, "");
seq = PySequence_Fast(orig, "can only join an iterable");
if (seq == 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