https://github.com/python/cpython/commit/5d887642d126bff378662fc6b145cc86b70207b0
commit: 5d887642d126bff378662fc6b145cc86b70207b0
branch: main
author: Kumar Aditya <[email protected]>
committer: kumaraditya303 <[email protected]>
date: 2026-10-22T14:16:24+05:30
summary:

gh-159123: fix ResourceWarning flake in asyncio SSL handshake failure tests 
(#160209)

files:
M Lib/test/test_asyncio/test_events.py

diff --git a/Lib/test/test_asyncio/test_events.py 
b/Lib/test/test_asyncio/test_events.py
index c59bc64e37df96..58556cc87409f7 100644
--- a/Lib/test/test_asyncio/test_events.py
+++ b/Lib/test/test_asyncio/test_events.py
@@ -1202,12 +1202,13 @@ def test_create_server_ssl_verify_failed(self):
                                             '(?i)certificate.verify.failed'):
                     self.loop.run_until_complete(f_c)
 
-            # execute the loop to log the connection error
-            test_utils.run_briefly(self.loop)
+            # close connection: wait until the server-side transport of the
+            # failed handshake is closed as well, otherwise its socket may
+            # still be open when the loop is closed (gh-159123).
+            server.close()
+            self.loop.run_until_complete(server.wait_closed())
 
-        # close connection
         self.assertIsNone(proto.transport)
-        server.close()
 
     @socket_helper.skip_unless_bind_unix_socket
     @unittest.skipIf(ssl is None, 'No ssl module')
@@ -1232,12 +1233,13 @@ def test_create_unix_server_ssl_verify_failed(self):
                                             '(?i)certificate.verify.failed'):
                     self.loop.run_until_complete(f_c)
 
-            # execute the loop to log the connection error
-            test_utils.run_briefly(self.loop)
+            # close connection: wait until the server-side transport of the
+            # failed handshake is closed as well, otherwise its socket may
+            # still be open when the loop is closed (gh-159123).
+            server.close()
+            self.loop.run_until_complete(server.wait_closed())
 
-        # close connection
         self.assertIsNone(proto.transport)
-        server.close()
 
     @unittest.skipIf(ssl is None, 'No ssl module')
     def test_create_server_ssl_match_failed(self):
@@ -1268,10 +1270,14 @@ def test_create_server_ssl_match_failed(self):
                 with self.assertRaisesRegex(ssl.CertificateError, regex):
                     self.loop.run_until_complete(f_c)
 
-        # close connection
+            # close connection: wait until the server-side transport of the
+            # failed handshake is closed as well, otherwise its socket may
+            # still be open when the loop is closed (gh-159123).
+            server.close()
+            self.loop.run_until_complete(server.wait_closed())
+
         # transport is None because TLS ALERT aborted the handshake
         self.assertIsNone(proto.transport)
-        server.close()
 
     @socket_helper.skip_unless_bind_unix_socket
     @unittest.skipIf(ssl is None, 'No ssl module')

_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]

Reply via email to