[3.12] gh-116401: Fix blocking os.fwalk() and shutil.rmtree() on opening a named pipe (GH-116421) (GH-116716)

(cherry picked from commit aa7bcf284f)
This commit is contained in:
Serhiy Storchaka 2024-03-13 12:02:37 +02:00 committed by GitHub
parent 9ef84b46db
commit 9caad1f99b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 113 additions and 8 deletions

View file

@ -669,6 +669,23 @@ class TestRmTree(BaseTest, unittest.TestCase):
finally:
shutil.rmtree(TESTFN, ignore_errors=True)
@unittest.skipUnless(hasattr(os, "mkfifo"), 'requires os.mkfifo()')
@unittest.skipIf(sys.platform == "vxworks",
"fifo requires special path on VxWorks")
def test_rmtree_on_named_pipe(self):
os.mkfifo(TESTFN)
try:
with self.assertRaises(NotADirectoryError):
shutil.rmtree(TESTFN)
self.assertTrue(os.path.exists(TESTFN))
finally:
os.unlink(TESTFN)
os.mkdir(TESTFN)
os.mkfifo(os.path.join(TESTFN, 'mypipe'))
shutil.rmtree(TESTFN)
self.assertFalse(os.path.exists(TESTFN))
class TestCopyTree(BaseTest, unittest.TestCase):