aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Lib/test/test_kqueue.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/test/test_kqueue.py')
-rw-r--r--Lib/test/test_kqueue.py18
1 files changed, 18 insertions, 0 deletions
diff --git a/Lib/test/test_kqueue.py b/Lib/test/test_kqueue.py
index 998fd9d4649..28e882b1051 100644
--- a/Lib/test/test_kqueue.py
+++ b/Lib/test/test_kqueue.py
@@ -5,6 +5,7 @@ import errno
import os
import select
import socket
+from test import support
import time
import unittest
@@ -256,6 +257,23 @@ class TestKQueue(unittest.TestCase):
self.addCleanup(kqueue.close)
self.assertEqual(os.get_inheritable(kqueue.fileno()), False)
+ @support.requires_fork()
+ def test_fork(self):
+ # gh-110395: kqueue objects must be closed after fork
+ kqueue = select.kqueue()
+ if (pid := os.fork()) == 0:
+ try:
+ self.assertTrue(kqueue.closed)
+ with self.assertRaisesRegex(ValueError, "closed kqueue"):
+ kqueue.fileno()
+ except:
+ os._exit(1)
+ finally:
+ os._exit(0)
+ else:
+ self.assertFalse(kqueue.closed)
+ support.wait_process(pid, exitcode=0)
+
if __name__ == "__main__":
unittest.main()