mirror of https://github.com/python/cpython
Issue #15778: Coerce ImportError.args to a string when it isn't
already one. Patch by Dave Malcolm.
This commit is contained in:
parent
491b1dc79e
commit
07c6e71689
|
@ -937,6 +937,11 @@ class ImportErrorTests(unittest.TestCase):
|
|||
self.assertEqual(exc.name, 'somename')
|
||||
self.assertEqual(exc.path, 'somepath')
|
||||
|
||||
def test_non_str_argument(self):
|
||||
# Issue #15778
|
||||
arg = b'abc'
|
||||
exc = ImportError(arg)
|
||||
self.assertEqual(str(arg), str(exc))
|
||||
|
||||
|
||||
def test_main():
|
||||
|
|
|
@ -10,6 +10,9 @@ What's New in Python 3.3.0 Release Candidate 1?
|
|||
Core and Builtins
|
||||
-----------------
|
||||
|
||||
- Issue #15778: ensure that str(ImportError(msg)) returns a str
|
||||
even when msg isn't a str.
|
||||
|
||||
- Issue #2051: Source file permission bits are once again correctly
|
||||
copied to the cached bytecode file. (The migration to importlib
|
||||
reintroduced this problem because these was no regression test. A test
|
||||
|
|
|
@ -679,7 +679,7 @@ ImportError_traverse(PyImportErrorObject *self, visitproc visit, void *arg)
|
|||
static PyObject *
|
||||
ImportError_str(PyImportErrorObject *self)
|
||||
{
|
||||
if (self->msg) {
|
||||
if (self->msg && PyUnicode_CheckExact(self->msg)) {
|
||||
Py_INCREF(self->msg);
|
||||
return self->msg;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue