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

This commit is contained in:
Serhiy Storchaka 2024-03-13 11:40:28 +02:00 committed by GitHub
parent 8332e85b2f
commit aa7bcf284f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 113 additions and 8 deletions

View file

@ -667,6 +667,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))
@unittest.skipIf(sys.platform[:6] == 'cygwin',
"This test can't be run on Cygwin (issue #1071513).")
@os_helper.skip_if_dac_override