@@ -1010,9 +1010,12 @@ class FwalkTests(WalkTests):
10101010 """Tests for os.fwalk()."""
10111011
10121012 def walk (self , top , ** kwargs ):
1013- for root , dirs , files , root_fd in os .fwalk (top , ** kwargs ):
1013+ for root , dirs , files , root_fd in self .fwalk (top , ** kwargs ):
10141014 yield (root , dirs , files )
10151015
1016+ def fwalk (self , * args , ** kwargs ):
1017+ return os .fwalk (* args , ** kwargs )
1018+
10161019 def _compare_to_walk (self , walk_kwargs , fwalk_kwargs ):
10171020 """
10181021 compare with walk() results.
@@ -1027,7 +1030,7 @@ def _compare_to_walk(self, walk_kwargs, fwalk_kwargs):
10271030 for root , dirs , files in os .walk (** walk_kwargs ):
10281031 expected [root ] = (set (dirs ), set (files ))
10291032
1030- for root , dirs , files , rootfd in os .fwalk (** fwalk_kwargs ):
1033+ for root , dirs , files , rootfd in self .fwalk (** fwalk_kwargs ):
10311034 self .assertIn (root , expected )
10321035 self .assertEqual (expected [root ], (set (dirs ), set (files )))
10331036
@@ -1049,7 +1052,7 @@ def test_yields_correct_dir_fd(self):
10491052 # check returned file descriptors
10501053 for topdown , follow_symlinks in itertools .product ((True , False ), repeat = 2 ):
10511054 args = support .TESTFN , topdown , None
1052- for root , dirs , files , rootfd in os .fwalk (* args , follow_symlinks = follow_symlinks ):
1055+ for root , dirs , files , rootfd in self .fwalk (* args , follow_symlinks = follow_symlinks ):
10531056 # check that the FD is valid
10541057 os .fstat (rootfd )
10551058 # redundant check
@@ -1064,22 +1067,14 @@ def test_fd_leak(self):
10641067 minfd = os .dup (1 )
10651068 os .close (minfd )
10661069 for i in range (256 ):
1067- for x in os .fwalk (support .TESTFN ):
1070+ for x in self .fwalk (support .TESTFN ):
10681071 pass
10691072 newfd = os .dup (1 )
10701073 self .addCleanup (os .close , newfd )
10711074 self .assertEqual (newfd , minfd )
10721075
10731076class BytesWalkTests (WalkTests ):
10741077 """Tests for os.walk() with bytes."""
1075- def setUp (self ):
1076- super ().setUp ()
1077- self .stack = contextlib .ExitStack ()
1078-
1079- def tearDown (self ):
1080- self .stack .close ()
1081- super ().tearDown ()
1082-
10831078 def walk (self , top , ** kwargs ):
10841079 if 'follow_symlinks' in kwargs :
10851080 kwargs ['followlinks' ] = kwargs .pop ('follow_symlinks' )
@@ -1091,6 +1086,18 @@ def walk(self, top, **kwargs):
10911086 bdirs [:] = list (map (os .fsencode , dirs ))
10921087 bfiles [:] = list (map (os .fsencode , files ))
10931088
1089+ @unittest .skipUnless (hasattr (os , 'fwalk' ), "Test needs os.fwalk()" )
1090+ class BytesFwalkTests (FwalkTests ):
1091+ """Tests for os.walk() with bytes."""
1092+ def fwalk (self , top = '.' , * args , ** kwargs ):
1093+ for broot , bdirs , bfiles , topfd in os .fwalk (os .fsencode (top ), * args , ** kwargs ):
1094+ root = os .fsdecode (broot )
1095+ dirs = list (map (os .fsdecode , bdirs ))
1096+ files = list (map (os .fsdecode , bfiles ))
1097+ yield (root , dirs , files , topfd )
1098+ bdirs [:] = list (map (os .fsencode , dirs ))
1099+ bfiles [:] = list (map (os .fsencode , files ))
1100+
10941101
10951102class MakedirTests (unittest .TestCase ):
10961103 def setUp (self ):
0 commit comments