summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_os.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/test/test_os.py')
-rw-r--r--Lib/test/test_os.py21
1 files changed, 21 insertions, 0 deletions
diff --git a/Lib/test/test_os.py b/Lib/test/test_os.py
index 7dc5784..de5a86f 100644
--- a/Lib/test/test_os.py
+++ b/Lib/test/test_os.py
@@ -1685,6 +1685,27 @@ class FwalkTests(WalkTests):
self.addCleanup(os.close, newfd)
self.assertEqual(newfd, minfd)
+ @unittest.skipIf(
+ support.is_emscripten, "Cannot dup stdout on Emscripten"
+ )
+ @unittest.skipIf(
+ support.is_android, "dup return value is unpredictable on Android"
+ )
+ def test_fd_finalization(self):
+ # Check that close()ing the fwalk() generator closes FDs
+ def getfd():
+ fd = os.dup(1)
+ os.close(fd)
+ return fd
+ for topdown in (False, True):
+ old_fd = getfd()
+ it = self.fwalk(os_helper.TESTFN, topdown=topdown)
+ self.assertEqual(getfd(), old_fd)
+ next(it)
+ self.assertGreater(getfd(), old_fd)
+ it.close()
+ self.assertEqual(getfd(), old_fd)
+
# fwalk() keeps file descriptors open
test_walk_many_open_files = None