Issue #15784: Modify OSError.__str__() to better distinguish between
errno error numbers and Windows error numbers.
This commit is contained in:
parent
ca2b64682e
commit
30147710e8
|
@ -216,14 +216,14 @@ class ExceptionTests(unittest.TestCase):
|
|||
self.assertEqual(w.winerror, 3)
|
||||
self.assertEqual(w.strerror, 'foo')
|
||||
self.assertEqual(w.filename, 'bar')
|
||||
self.assertEqual(str(w), "[Error 3] foo: 'bar'")
|
||||
self.assertEqual(str(w), "[WinError 3] foo: 'bar'")
|
||||
# Unknown win error becomes EINVAL (22)
|
||||
w = OSError(0, 'foo', None, 1001)
|
||||
self.assertEqual(w.errno, 22)
|
||||
self.assertEqual(w.winerror, 1001)
|
||||
self.assertEqual(w.strerror, 'foo')
|
||||
self.assertEqual(w.filename, None)
|
||||
self.assertEqual(str(w), "[Error 1001] foo")
|
||||
self.assertEqual(str(w), "[WinError 1001] foo")
|
||||
# Non-numeric "errno"
|
||||
w = OSError('bar', 'foo')
|
||||
self.assertEqual(w.errno, 'bar')
|
||||
|
|
|
@ -10,6 +10,9 @@ What's New in Python 3.3.0 Release Candidate 2?
|
|||
Core and Builtins
|
||||
-----------------
|
||||
|
||||
- Issue #15784: Modify OSError.__str__() to better distinguish between
|
||||
errno error numbers and Windows error numbers.
|
||||
|
||||
Library
|
||||
-------
|
||||
|
||||
|
|
|
@ -1016,12 +1016,12 @@ OSError_str(PyOSErrorObject *self)
|
|||
#ifdef MS_WINDOWS
|
||||
/* If available, winerror has the priority over myerrno */
|
||||
if (self->winerror && self->filename)
|
||||
return PyUnicode_FromFormat("[Error %S] %S: %R",
|
||||
return PyUnicode_FromFormat("[WinError %S] %S: %R",
|
||||
self->winerror ? self->winerror: Py_None,
|
||||
self->strerror ? self->strerror: Py_None,
|
||||
self->filename);
|
||||
if (self->winerror && self->strerror)
|
||||
return PyUnicode_FromFormat("[Error %S] %S",
|
||||
return PyUnicode_FromFormat("[WinError %S] %S",
|
||||
self->winerror ? self->winerror: Py_None,
|
||||
self->strerror ? self->strerror: Py_None);
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue