From 7a18d21230b4efb203a9a2ce9972962a2bf8fe04 Mon Sep 17 00:00:00 2001 From: Antoine Pitrou <solipsis@pitrou.net> Date: Tue, 30 Aug 2011 18:34:47 +0200 Subject: [PATCH] Remove misleading comment and code. Windows does set the errno attribute to ENOENT, but the error message displays the Windows error number (3 -> ERROR_PATH_NOT_FOUND), not the errno number (2 -> ENOENT). The Unix errno corresponding to 3 is ESRCH, explaining the confusion, which can be seen in the following snippet: >>> shutil.rmtree("foo") Traceback (most recent call last): File "<stdin>", line 1, in <module> File "Z:\default\lib\shutil.py", line 272, in rmtree onerror(os.listdir, path, sys.exc_info()) File "Z:\default\lib\shutil.py", line 270, in rmtree names = os.listdir(path) WindowsError: [Error 3] The system cannot find the path specified: 'foo\\*.*' >>> e = sys.last_value >>> e.errno 2 >>> e.winerror 3 >>> errno.errorcode[2] 'ENOENT' For reference, see PC/errmap.h and http://msdn.microsoft.com/en-us/library/ms681382%28v=vs.85%29.aspx --- Lib/test/support.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Lib/test/support.py b/Lib/test/support.py index d00a51324a1..03af378efee 100644 --- a/Lib/test/support.py +++ b/Lib/test/support.py @@ -212,8 +212,7 @@ def rmtree(path): try: shutil.rmtree(path) except OSError as error: - # Unix returns ENOENT, Windows returns ESRCH. - if error.errno not in (errno.ENOENT, errno.ESRCH): + if error.errno != errno.ENOENT: raise def make_legacy_pyc(source): -- 2.30.9