mirror of
https://github.com/python/cpython.git
synced 2025-08-04 00:48:58 +00:00
Issue #27186: Add os.PathLike support to DirEntry
Initial patch thanks to Jelle Zijlstra.
This commit is contained in:
parent
419e8ede19
commit
96881cd621
4 changed files with 39 additions and 5 deletions
|
@ -2824,11 +2824,13 @@ class TestScandir(unittest.TestCase):
|
|||
|
||||
def setUp(self):
|
||||
self.path = os.path.realpath(support.TESTFN)
|
||||
self.bytes_path = os.fsencode(self.path)
|
||||
self.addCleanup(support.rmtree, self.path)
|
||||
os.mkdir(self.path)
|
||||
|
||||
def create_file(self, name="file.txt"):
|
||||
filename = os.path.join(self.path, name)
|
||||
path = self.bytes_path if isinstance(name, bytes) else self.path
|
||||
filename = os.path.join(path, name)
|
||||
create_file(filename, b'python')
|
||||
return filename
|
||||
|
||||
|
@ -2917,15 +2919,16 @@ class TestScandir(unittest.TestCase):
|
|||
self.check_entry(entry, 'symlink_file.txt', False, True, True)
|
||||
|
||||
def get_entry(self, name):
|
||||
entries = list(os.scandir(self.path))
|
||||
path = self.bytes_path if isinstance(name, bytes) else self.path
|
||||
entries = list(os.scandir(path))
|
||||
self.assertEqual(len(entries), 1)
|
||||
|
||||
entry = entries[0]
|
||||
self.assertEqual(entry.name, name)
|
||||
return entry
|
||||
|
||||
def create_file_entry(self):
|
||||
filename = self.create_file()
|
||||
def create_file_entry(self, name='file.txt'):
|
||||
filename = self.create_file(name=name)
|
||||
return self.get_entry(os.path.basename(filename))
|
||||
|
||||
def test_current_directory(self):
|
||||
|
@ -2946,6 +2949,18 @@ class TestScandir(unittest.TestCase):
|
|||
entry = self.create_file_entry()
|
||||
self.assertEqual(repr(entry), "<DirEntry 'file.txt'>")
|
||||
|
||||
def test_fspath_protocol(self):
|
||||
entry = self.create_file_entry()
|
||||
self.assertEqual(os.fspath(entry), os.path.join(self.path, 'file.txt'))
|
||||
|
||||
def test_fspath_protocol_bytes(self):
|
||||
bytes_filename = os.fsencode('bytesfile.txt')
|
||||
bytes_entry = self.create_file_entry(name=bytes_filename)
|
||||
fspath = os.fspath(bytes_entry)
|
||||
self.assertIsInstance(fspath, bytes)
|
||||
self.assertEqual(fspath,
|
||||
os.path.join(os.fsencode(self.path),bytes_filename))
|
||||
|
||||
def test_removed_dir(self):
|
||||
path = os.path.join(self.path, 'dir')
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue