Issue #28666: Now test.support.rmtree is able to remove unwritable or

unreadable directories.
This commit is contained in:
Serhiy Storchaka 2016-11-20 16:19:20 +02:00
commit 0e7dbe901c
3 changed files with 56 additions and 12 deletions

View file

@ -1,5 +1,6 @@
import importlib
import shutil
import stat
import sys
import os
import unittest
@ -12,9 +13,6 @@ TESTFN = support.TESTFN
class TestSupport(unittest.TestCase):
def setUp(self):
support.unlink(TESTFN)
tearDown = setUp
def test_import_module(self):
support.import_module("ftplib")
@ -46,15 +44,28 @@ class TestSupport(unittest.TestCase):
support.unlink(TESTFN)
def test_rmtree(self):
TESTDIRN = os.path.basename(tempfile.mkdtemp(dir='.'))
self.addCleanup(support.rmtree, TESTDIRN)
support.rmtree(TESTDIRN)
dirpath = support.TESTFN + 'd'
subdirpath = os.path.join(dirpath, 'subdir')
os.mkdir(dirpath)
os.mkdir(subdirpath)
support.rmtree(dirpath)
self.assertFalse(os.path.exists(dirpath))
with support.swap_attr(support, 'verbose', 0):
support.rmtree(dirpath)
os.mkdir(TESTDIRN)
os.mkdir(os.path.join(TESTDIRN, TESTDIRN))
support.rmtree(TESTDIRN)
self.assertFalse(os.path.exists(TESTDIRN))
support.rmtree(TESTDIRN)
os.mkdir(dirpath)
os.mkdir(subdirpath)
os.chmod(dirpath, stat.S_IRUSR|stat.S_IXUSR)
with support.swap_attr(support, 'verbose', 0):
support.rmtree(dirpath)
self.assertFalse(os.path.exists(dirpath))
os.mkdir(dirpath)
os.mkdir(subdirpath)
os.chmod(dirpath, 0)
with support.swap_attr(support, 'verbose', 0):
support.rmtree(dirpath)
self.assertFalse(os.path.exists(dirpath))
def test_forget(self):
mod_filename = TESTFN + '.py'