@@ -317,7 +317,7 @@ def test_rmtree_works_on_junctions(self):
317317self .assertTrue (os .path .exists (dir3 ))
318318self .assertTrue (os .path .exists (file1 ))
319319
320- def test_rmtree_errors_onerror (self ):
320+ def test_rmtree_errors (self ):
321321# filename is guaranteed not to exist
322322filename = tempfile .mktemp (dir = self .mkdtemp ())
323323self .assertRaises (FileNotFoundError ,shutil .rmtree ,filename )
@@ -326,15 +326,28 @@ def test_rmtree_errors_onerror(self):
326326
327327# existing file
328328tmpdir = self .mkdtemp ()
329- write_file ((tmpdir ,"tstfile" ),"" )
330329filename = os .path .join (tmpdir ,"tstfile" )
330+ write_file (filename ,"" )
331331with self .assertRaises (NotADirectoryError )as cm :
332332shutil .rmtree (filename )
333333self .assertEqual (cm .exception .filename ,filename )
334334self .assertTrue (os .path .exists (filename ))
335335# test that ignore_errors option is honored
336336shutil .rmtree (filename ,ignore_errors = True )
337337self .assertTrue (os .path .exists (filename ))
338+
339+ self .assertRaises (TypeError ,shutil .rmtree ,None )
340+ self .assertRaises (TypeError ,shutil .rmtree ,None ,ignore_errors = True )
341+ exc = TypeError if shutil .rmtree .avoids_symlink_attacks else NotImplementedError
342+ with self .assertRaises (exc ):
343+ shutil .rmtree (filename ,dir_fd = 'invalid' )
344+ with self .assertRaises (exc ):
345+ shutil .rmtree (filename ,dir_fd = 'invalid' ,ignore_errors = True )
346+
347+ def test_rmtree_errors_onerror (self ):
348+ tmpdir = self .mkdtemp ()
349+ filename = os .path .join (tmpdir ,"tstfile" )
350+ write_file (filename ,"" )
338351errors = []
339352def onerror (* args ):
340353errors .append (args )
@@ -350,23 +363,9 @@ def onerror(*args):
350363self .assertEqual (errors [1 ][2 ][1 ].filename ,filename )
351364
352365def test_rmtree_errors_onexc (self ):
353- # filename is guaranteed not to exist
354- filename = tempfile .mktemp (dir = self .mkdtemp ())
355- self .assertRaises (FileNotFoundError ,shutil .rmtree ,filename )
356- # test that ignore_errors option is honored
357- shutil .rmtree (filename ,ignore_errors = True )
358-
359- # existing file
360366tmpdir = self .mkdtemp ()
361- write_file ((tmpdir ,"tstfile" ),"" )
362367filename = os .path .join (tmpdir ,"tstfile" )
363- with self .assertRaises (NotADirectoryError )as cm :
364- shutil .rmtree (filename )
365- self .assertEqual (cm .exception .filename ,filename )
366- self .assertTrue (os .path .exists (filename ))
367- # test that ignore_errors option is honored
368- shutil .rmtree (filename ,ignore_errors = True )
369- self .assertTrue (os .path .exists (filename ))
368+ write_file (filename ,"" )
370369errors = []
371370def onexc (* args ):
372371errors .append (args )