summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorRichard Oudkerk <shibturn@gmail.com>2012-10-09 12:54:02 (GMT)
committerRichard Oudkerk <shibturn@gmail.com>2012-10-09 12:54:02 (GMT)
commit934f56335312da12cb21d66a16c6cf6e664c4a03 (patch)
treecf52ba18628119177caa4899f1cf6562119e5af4 /Lib
parentc9061a5a2f9f5d34aa7734596c82c6f55995a417 (diff)
parentea69bd3ce14a776be0a64e32d45a3ee60d91210a (diff)
downloadcpython-934f56335312da12cb21d66a16c6cf6e664c4a03.zip
cpython-934f56335312da12cb21d66a16c6cf6e664c4a03.tar.gz
cpython-934f56335312da12cb21d66a16c6cf6e664c4a03.tar.bz2
Issue #16169: Merge
Diffstat (limited to 'Lib')
-rw-r--r--Lib/ctypes/__init__.py2
-rw-r--r--Lib/ctypes/test/test_win32.py22
2 files changed, 23 insertions, 1 deletions
diff --git a/Lib/ctypes/__init__.py b/Lib/ctypes/__init__.py
index f0bd66a..c92e130 100644
--- a/Lib/ctypes/__init__.py
+++ b/Lib/ctypes/__init__.py
@@ -456,7 +456,7 @@ if _os.name in ("nt", "ce"):
code = GetLastError()
if descr is None:
descr = FormatError(code).strip()
- return WindowsError(code, descr)
+ return WindowsError(None, descr, None, code)
if sizeof(c_uint) == sizeof(c_void_p):
c_size_t = c_uint
diff --git a/Lib/ctypes/test/test_win32.py b/Lib/ctypes/test/test_win32.py
index 2534a74..128914e 100644
--- a/Lib/ctypes/test/test_win32.py
+++ b/Lib/ctypes/test/test_win32.py
@@ -67,6 +67,28 @@ if sys.platform == "win32":
self.assertEqual(ex.text, "text")
self.assertEqual(ex.details, ("details",))
+ class TestWinError(unittest.TestCase):
+ def test_winerror(self):
+ # see Issue 16169
+ import errno
+ ERROR_INVALID_PARAMETER = 87
+ msg = FormatError(ERROR_INVALID_PARAMETER).strip()
+ args = (errno.EINVAL, msg, None, ERROR_INVALID_PARAMETER)
+
+ e = WinError(ERROR_INVALID_PARAMETER)
+ self.assertEqual(e.args, args)
+ self.assertEqual(e.errno, errno.EINVAL)
+ self.assertEqual(e.winerror, ERROR_INVALID_PARAMETER)
+
+ windll.kernel32.SetLastError(ERROR_INVALID_PARAMETER)
+ try:
+ raise WinError()
+ except OSError as exc:
+ e = exc
+ self.assertEqual(e.args, args)
+ self.assertEqual(e.errno, errno.EINVAL)
+ self.assertEqual(e.winerror, ERROR_INVALID_PARAMETER)
+
class Structures(unittest.TestCase):
def test_struct_by_value(self):