]> granicus.if.org Git - python/commitdiff
Issue #16414: Fix test_os on Windows, don't test os.listdir() with undecodable
authorVictor Stinner <victor.stinner@gmail.com>
Tue, 6 Nov 2012 23:10:14 +0000 (00:10 +0100)
committerVictor Stinner <victor.stinner@gmail.com>
Tue, 6 Nov 2012 23:10:14 +0000 (00:10 +0100)
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

index ee19da3fc71817ed2d3bfb45be0f018ddadd6c05..09d3e7545b9ad4fc468de3c9255df3486ed4108c 100644 (file)
@@ -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"),
             ))