diff options
author | Benjamin Peterson <benjamin@python.org> | 2014-09-28 16:48:46 (GMT) |
---|---|---|
committer | Benjamin Peterson <benjamin@python.org> | 2014-09-28 16:48:46 (GMT) |
commit | 1643d5cb08b72cb4f589ddd38db059412a4dcdd1 (patch) | |
tree | 8fb181a9a0a9205c4f4850917ac9ab7b1685264b | |
parent | 9ad23c6c315d09bef659a12a9f7f7123c707ea41 (diff) | |
download | cpython-1643d5cb08b72cb4f589ddd38db059412a4dcdd1.zip cpython-1643d5cb08b72cb4f589ddd38db059412a4dcdd1.tar.gz cpython-1643d5cb08b72cb4f589ddd38db059412a4dcdd1.tar.bz2 |
give exception a nice message (closes #22379)
Patch by Yongzhi Pan.
-rw-r--r-- | Lib/test/string_tests.py | 13 | ||||
-rw-r--r-- | Lib/test/test_string.py | 11 | ||||
-rw-r--r-- | Lib/test/test_userstring.py | 12 | ||||
-rw-r--r-- | Misc/ACKS | 1 | ||||
-rw-r--r-- | Misc/NEWS | 3 | ||||
-rw-r--r-- | Objects/stringobject.c | 2 |
6 files changed, 20 insertions, 22 deletions
diff --git a/Lib/test/string_tests.py b/Lib/test/string_tests.py index 0479601..7818112 100644 --- a/Lib/test/string_tests.py +++ b/Lib/test/string_tests.py @@ -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: diff --git a/Lib/test/test_string.py b/Lib/test/test_string.py index 0d07b91..f69255b 100644 --- a/Lib/test/test_string.py +++ b/Lib/test/test_string.py @@ -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) diff --git a/Lib/test/test_userstring.py b/Lib/test/test_userstring.py index 51d8e8b..9cca14a 100644 --- a/Lib/test/test_userstring.py +++ b/Lib/test/test_userstring.py @@ -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. diff --git a/Objects/stringobject.c b/Objects/stringobject.c index 0b6d36c..f95857a 100644 --- a/Objects/stringobject.c +++ b/Objects/stringobject.c @@ -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; } |