@@ -2824,11 +2824,13 @@ class TestScandir(unittest.TestCase):
28242824
28252825 def setUp (self ):
28262826 self .path = os .path .realpath (support .TESTFN )
2827+ self .bytes_path = os .fsencode (self .path )
28272828 self .addCleanup (support .rmtree , self .path )
28282829 os .mkdir (self .path )
28292830
28302831 def create_file (self , name = "file.txt" ):
2831- filename = os .path .join (self .path , name )
2832+ path = self .bytes_path if isinstance (name , bytes ) else self .path
2833+ filename = os .path .join (path , name )
28322834 create_file (filename , b'python' )
28332835 return filename
28342836
@@ -2917,15 +2919,16 @@ def test_attributes(self):
29172919 self .check_entry (entry , 'symlink_file.txt' , False , True , True )
29182920
29192921 def get_entry (self , name ):
2920- entries = list (os .scandir (self .path ))
2922+ path = self .bytes_path if isinstance (name , bytes ) else self .path
2923+ entries = list (os .scandir (path ))
29212924 self .assertEqual (len (entries ), 1 )
29222925
29232926 entry = entries [0 ]
29242927 self .assertEqual (entry .name , name )
29252928 return entry
29262929
2927- def create_file_entry (self ):
2928- filename = self .create_file ()
2930+ def create_file_entry (self , name = 'file.txt' ):
2931+ filename = self .create_file (name = name )
29292932 return self .get_entry (os .path .basename (filename ))
29302933
29312934 def test_current_directory (self ):
@@ -2946,6 +2949,18 @@ def test_repr(self):
29462949 entry = self .create_file_entry ()
29472950 self .assertEqual (repr (entry ), "<DirEntry 'file.txt'>" )
29482951
2952+ def test_fspath_protocol (self ):
2953+ entry = self .create_file_entry ()
2954+ self .assertEqual (os .fspath (entry ), os .path .join (self .path , 'file.txt' ))
2955+
2956+ def test_fspath_protocol_bytes (self ):
2957+ bytes_filename = os .fsencode ('bytesfile.txt' )
2958+ bytes_entry = self .create_file_entry (name = bytes_filename )
2959+ fspath = os .fspath (bytes_entry )
2960+ self .assertIsInstance (fspath , bytes )
2961+ self .assertEqual (fspath ,
2962+ os .path .join (os .fsencode (self .path ),bytes_filename ))
2963+
29492964 def test_removed_dir (self ):
29502965 path = os .path .join (self .path , 'dir' )
29512966
0 commit comments