From 64e039af029fff0edb0a59f8950dc1c64fa8a341 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Wed, 7 Nov 2012 00:10:14 +0100 Subject: [PATCH] Issue #16414: Fix test_os on Windows, don't test os.listdir() with undecodable With the ANSI code page 932, os.listdir(b'\xe7') return an empty list (instead of failing), whereas os.listdir(b'\xff') raises a FileNotFoundError. It looks like a Windows bug: b'\xe7' directory does not exist, FindFirstFileA(b'\xe7') fails with ERROR_FILE_NOT_FOUND (2), instead of ERROR_PATH_NOT_FOUND (3). --- Lib/test/test_os.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/Lib/test/test_os.py b/Lib/test/test_os.py index ee19da3fc7..09d3e7545b 100644 --- a/Lib/test/test_os.py +++ b/Lib/test/test_os.py @@ -2076,7 +2076,6 @@ class OSErrorTests(unittest.TestCase): funcs = [ (self.filenames, os.chdir,), (self.filenames, os.chmod, 0o777), - (self.filenames, os.listdir,), (self.filenames, os.lstat,), (self.filenames, os.open, os.O_RDONLY), (self.filenames, os.rmdir,), @@ -2089,9 +2088,20 @@ class OSErrorTests(unittest.TestCase): (self.bytes_filenames, os.replace, b"dst"), (self.unicode_filenames, os.rename, "dst"), (self.unicode_filenames, os.replace, "dst"), + # Issue #16414: Don't test undecodable names with listdir() + # because of a Windows bug. + # + # With the ANSI code page 932, os.listdir(b'\xe7') return an + # empty list (instead of failing), whereas os.listdir(b'\xff') + # raises a FileNotFoundError. It looks like a Windows bug: + # b'\xe7' directory does not exist, FindFirstFileA(b'\xe7') + # fails with ERROR_FILE_NOT_FOUND (2), instead of + # ERROR_PATH_NOT_FOUND (3). + (self.unicode_filenames, os.listdir,), )) else: funcs.extend(( + (self.filenames, os.listdir,), (self.filenames, os.rename, "dst"), (self.filenames, os.replace, "dst"), )) -- 2.50.1