File tree Expand file tree Collapse file tree 1 file changed +18
-0
lines changed
Expand file tree Collapse file tree 1 file changed +18
-0
lines changed Original file line number Diff line number Diff line change 55import os
66import select
77import socket
8+ from test import support
89import time
910import unittest
1011
@@ -256,6 +257,23 @@ def test_fd_non_inheritable(self):
256257 self .addCleanup (kqueue .close )
257258 self .assertEqual (os .get_inheritable (kqueue .fileno ()), False )
258259
260+ @support .requires_fork ()
261+ def test_fork (self ):
262+ # gh-110395: kqueue objects must be closed after fork
263+ kqueue = select .kqueue ()
264+ if (pid := os .fork ()) == 0 :
265+ try :
266+ self .assertTrue (kqueue .closed )
267+ with self .assertRaisesRegex (ValueError , "closed kqueue" ):
268+ kqueue .fileno ()
269+ except :
270+ os ._exit (1 )
271+ finally :
272+ os ._exit (0 )
273+ else :
274+ support .wait_process (pid , exitcode = 0 )
275+ self .assertFalse (kqueue .closed ) # child done, we're still open.
276+
259277
260278if __name__ == "__main__" :
261279 unittest .main ()
You can’t perform that action at this time.
0 commit comments