summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2017-07-11 04:16:11 (GMT)
committerGitHub <noreply@github.com>2017-07-11 04:16:11 (GMT)
commitecfe4f678bfb0e3c19c90fd7db79c5f3c76023e4 (patch)
treea3f14814b854a4c76f95b657ea9f61af951383a5 /Lib
parentfe6e686c27ce3a3ecdf03803cff7e230dee5530d (diff)
downloadcpython-ecfe4f678bfb0e3c19c90fd7db79c5f3c76023e4.zip
cpython-ecfe4f678bfb0e3c19c90fd7db79c5f3c76023e4.tar.gz
cpython-ecfe4f678bfb0e3c19c90fd7db79c5f3c76023e4.tar.bz2
[3.6] bpo-30879: os.listdir() and os.scandir() now emit bytes names when (GH-2634) (#2656)
called with bytes-like argument.. (cherry picked from commit 1180e5a51871fa53ca6892e83fd2e69dc2600447)
Diffstat (limited to 'Lib')
-rw-r--r--Lib/test/test_os.py16
-rw-r--r--Lib/test/test_posix.py14
2 files changed, 27 insertions, 3 deletions
diff --git a/Lib/test/test_os.py b/Lib/test/test_os.py
index f74c199..e4951b4 100644
--- a/Lib/test/test_os.py
+++ b/Lib/test/test_os.py
@@ -3402,6 +3402,22 @@ class TestScandir(unittest.TestCase):
self.assertEqual(entry.path,
os.fsencode(os.path.join(self.path, 'file.txt')))
+ def test_bytes_like(self):
+ self.create_file("file.txt")
+
+ for cls in bytearray, memoryview:
+ path_bytes = cls(os.fsencode(self.path))
+ with self.assertWarns(DeprecationWarning):
+ entries = list(os.scandir(path_bytes))
+ self.assertEqual(len(entries), 1, entries)
+ entry = entries[0]
+
+ self.assertEqual(entry.name, b'file.txt')
+ self.assertEqual(entry.path,
+ os.fsencode(os.path.join(self.path, 'file.txt')))
+ self.assertIs(type(entry.name), bytes)
+ self.assertIs(type(entry.path), bytes)
+
def test_empty_path(self):
self.assertRaises(FileNotFoundError, os.scandir, '')
diff --git a/Lib/test/test_posix.py b/Lib/test/test_posix.py
index 4ca6230..a6e2fed 100644
--- a/Lib/test/test_posix.py
+++ b/Lib/test/test_posix.py
@@ -581,17 +581,25 @@ class PosixTester(unittest.TestCase):
self.assertRaises(OSError, posix.chdir, support.TESTFN)
def test_listdir(self):
- self.assertTrue(support.TESTFN in posix.listdir(os.curdir))
+ self.assertIn(support.TESTFN, posix.listdir(os.curdir))
def test_listdir_default(self):
# When listdir is called without argument,
# it's the same as listdir(os.curdir).
- self.assertTrue(support.TESTFN in posix.listdir())
+ self.assertIn(support.TESTFN, posix.listdir())
def test_listdir_bytes(self):
# When listdir is called with a bytes object,
# the returned strings are of type bytes.
- self.assertTrue(os.fsencode(support.TESTFN) in posix.listdir(b'.'))
+ self.assertIn(os.fsencode(support.TESTFN), posix.listdir(b'.'))
+
+ def test_listdir_bytes_like(self):
+ for cls in bytearray, memoryview:
+ with self.assertWarns(DeprecationWarning):
+ names = posix.listdir(cls(b'.'))
+ self.assertIn(os.fsencode(support.TESTFN), names)
+ for name in names:
+ self.assertIs(type(name), bytes)
@unittest.skipUnless(posix.listdir in os.supports_fd,
"test needs fd support for posix.listdir()")