aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2024-06-04 22:18:33 +0200
committerGitHub <noreply@github.com>2024-06-04 20:18:33 +0000
commita9e807fe44f581ae39f2fcc7a62c547f2f2eb6f2 (patch)
tree3785f0e5080dff886efb4329fb195d6aa1e42a2a
parent[3.13] gh-119999: Fix potential race condition in `_Py_ExplicitMergeRefcount`... (diff)
downloadcpython-a9e807fe44f581ae39f2fcc7a62c547f2f2eb6f2.tar.gz
cpython-a9e807fe44f581ae39f2fcc7a62c547f2f2eb6f2.tar.bz2
cpython-a9e807fe44f581ae39f2fcc7a62c547f2f2eb6f2.zip
[3.13] gh-120048: Make `test_imaplib` faster (GH-120050) (#120069)
The `test_imaplib` was taking 40+ minutes in the refleak build bots because the tests waiting on a client `self._setup()` was creating a client that prevented progress until its connection timed out, which scaled with the global timeout. We should set `connect=False` for the tests that don't want `_setup()` to create a client. (cherry picked from commit 710cbea6604d27c7d59ae4953bf522b997a82cc7) Co-authored-by: Sam Gross <colesbury@gmail.com> Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
-rw-r--r--Lib/test/test_imaplib.py22
1 files changed, 8 insertions, 14 deletions
diff --git a/Lib/test/test_imaplib.py b/Lib/test/test_imaplib.py
index 79bf7dbdbb..b5384b5946 100644
--- a/Lib/test/test_imaplib.py
+++ b/Lib/test/test_imaplib.py
@@ -458,18 +458,14 @@ class NewIMAPTestsMixin():
with self.imap_class(*server.server_address):
pass
- @requires_resource('walltime')
def test_imaplib_timeout_test(self):
- _, server = self._setup(SimpleIMAPHandler)
- addr = server.server_address[1]
- client = self.imap_class("localhost", addr, timeout=None)
- self.assertEqual(client.sock.timeout, None)
- client.shutdown()
- client = self.imap_class("localhost", addr, timeout=support.LOOPBACK_TIMEOUT)
- self.assertEqual(client.sock.timeout, support.LOOPBACK_TIMEOUT)
- client.shutdown()
+ _, server = self._setup(SimpleIMAPHandler, connect=False)
+ with self.imap_class(*server.server_address, timeout=None) as client:
+ self.assertEqual(client.sock.timeout, None)
+ with self.imap_class(*server.server_address, timeout=support.LOOPBACK_TIMEOUT) as client:
+ self.assertEqual(client.sock.timeout, support.LOOPBACK_TIMEOUT)
with self.assertRaises(ValueError):
- client = self.imap_class("localhost", addr, timeout=0)
+ self.imap_class(*server.server_address, timeout=0)
def test_imaplib_timeout_functionality_test(self):
class TimeoutHandler(SimpleIMAPHandler):
@@ -552,7 +548,6 @@ class NewIMAPSSLTests(NewIMAPTestsMixin, unittest.TestCase):
imap_class = IMAP4_SSL
server_class = SecureTCPServer
- @requires_resource('walltime')
def test_ssl_raises(self):
ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
self.assertEqual(ssl_context.verify_mode, ssl.CERT_REQUIRED)
@@ -566,17 +561,16 @@ class NewIMAPSSLTests(NewIMAPTestsMixin, unittest.TestCase):
CERTIFICATE_VERIFY_FAILED # AWS-LC
)""", re.X)
with self.assertRaisesRegex(ssl.CertificateError, regex):
- _, server = self._setup(SimpleIMAPHandler)
+ _, server = self._setup(SimpleIMAPHandler, connect=False)
client = self.imap_class(*server.server_address,
ssl_context=ssl_context)
client.shutdown()
- @requires_resource('walltime')
def test_ssl_verified(self):
ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
ssl_context.load_verify_locations(CAFILE)
- _, server = self._setup(SimpleIMAPHandler)
+ _, server = self._setup(SimpleIMAPHandler, connect=False)
client = self.imap_class("localhost", server.server_address[1],
ssl_context=ssl_context)
client.shutdown()