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.name, 'somename')
|
||||||
self.assertEqual(exc.path, 'somepath')
|
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():
|
def test_main():
|
||||||
|
@ -10,6 +10,9 @@ What's New in Python 3.3.0 Release Candidate 1?
|
|||||||
Core and Builtins
|
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
|
- Issue #2051: Source file permission bits are once again correctly
|
||||||
copied to the cached bytecode file. (The migration to importlib
|
copied to the cached bytecode file. (The migration to importlib
|
||||||
reintroduced this problem because these was no regression test. A test
|
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 *
|
static PyObject *
|
||||||
ImportError_str(PyImportErrorObject *self)
|
ImportError_str(PyImportErrorObject *self)
|
||||||
{
|
{
|
||||||
if (self->msg) {
|
if (self->msg && PyUnicode_CheckExact(self->msg)) {
|
||||||
Py_INCREF(self->msg);
|
Py_INCREF(self->msg);
|
||||||
return self->msg;
|
return self->msg;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user