@@ -1370,8 +1370,6 @@ def test_unsupported_operation(self):
13701370 self .assertRaises (e , p .touch )
13711371 self .assertRaises (e , p .chmod , 0o755 )
13721372 self .assertRaises (e , p .lchmod , 0o755 )
1373- self .assertRaises (e , p .unlink )
1374- self .assertRaises (e , p .rmdir )
13751373 self .assertRaises (e , p .owner )
13761374 self .assertRaises (e , p .group )
13771375 self .assertRaises (e , p .as_uri )
@@ -1493,31 +1491,18 @@ def mkdir(self, mode=0o777, parents=False, exist_ok=False):
14931491 self .parent .mkdir (parents = True , exist_ok = True )
14941492 self .mkdir (mode , parents = False , exist_ok = exist_ok )
14951493
1496- def unlink (self , missing_ok = False ):
1497- path = str (self )
1498- name = self .name
1499- parent = str (self .parent )
1500- if path in self ._directories :
1501- raise IsADirectoryError (errno .EISDIR , "Is a directory" , path )
1502- elif path in self ._files :
1503- self ._directories [parent ].remove (name )
1504- del self ._files [path ]
1505- elif not missing_ok :
1506- raise FileNotFoundError (errno .ENOENT , "File not found" , path )
1507-
1508- def rmdir (self ):
1494+ def _delete (self ):
15091495 path = str (self )
15101496 if path in self ._files :
1511- raise NotADirectoryError (errno .ENOTDIR , "Not a directory" , path )
1512- elif path not in self ._directories :
1513- raise FileNotFoundError (errno .ENOENT , "File not found" , path )
1514- elif self ._directories [path ]:
1515- raise OSError (errno .ENOTEMPTY , "Directory not empty" , path )
1516- else :
1517- name = self .name
1518- parent = str (self .parent )
1519- self ._directories [parent ].remove (name )
1497+ del self ._files [path ]
1498+ elif path in self ._directories :
1499+ for name in list (self ._directories [path ]):
1500+ self .joinpath (name )._delete ()
15201501 del self ._directories [path ]
1502+ else :
1503+ raise FileNotFoundError (errno .ENOENT , "File not found" , path )
1504+ parent = str (self .parent )
1505+ self ._directories [parent ].remove (self .name )
15211506
15221507
15231508class DummyPathTest (DummyPurePathTest ):
@@ -2245,30 +2230,11 @@ def test_is_char_device_false(self):
22452230 self .assertIs ((P / 'fileA\udfff ' ).is_char_device (), False )
22462231 self .assertIs ((P / 'fileA\x00 ' ).is_char_device (), False )
22472232
2248- def test_unlink (self ):
2249- p = self .cls (self .base ) / 'fileA'
2250- p .unlink ()
2251- self .assertFileNotFound (p .stat )
2252- self .assertFileNotFound (p .unlink )
2253-
2254- def test_unlink_missing_ok (self ):
2255- p = self .cls (self .base ) / 'fileAAA'
2256- self .assertFileNotFound (p .unlink )
2257- p .unlink (missing_ok = True )
2258-
2259- def test_rmdir (self ):
2260- p = self .cls (self .base ) / 'dirA'
2261- for q in p .iterdir ():
2262- q .unlink ()
2263- p .rmdir ()
2264- self .assertFileNotFound (p .stat )
2265- self .assertFileNotFound (p .unlink )
2266-
22672233 def test_delete_file (self ):
22682234 p = self .cls (self .base ) / 'fileA'
22692235 p ._delete ()
22702236 self .assertFileNotFound (p .stat )
2271- self .assertFileNotFound (p .unlink )
2237+ self .assertFileNotFound (p ._delete )
22722238
22732239 def test_delete_dir (self ):
22742240 base = self .cls (self .base )
@@ -2347,7 +2313,7 @@ def setUp(self):
23472313
23482314 def tearDown (self ):
23492315 base = self .cls (self .base )
2350- base ._rmtree ()
2316+ base ._delete ()
23512317
23522318 def test_walk_topdown (self ):
23532319 walker = self .walk_path .walk ()
0 commit comments