mirror of
https://github.com/python/cpython.git
synced 2025-08-31 05:58:33 +00:00
bpo-31370: Remove support for threads-less builds (#3385)
* Remove Setup.config * Always define WITH_THREAD for compatibility.
This commit is contained in:
parent
1f06a680de
commit
a6a4dc816d
135 changed files with 2472 additions and 4377 deletions
|
@ -21,6 +21,8 @@ import pickle
|
|||
import struct
|
||||
import random
|
||||
import string
|
||||
import _thread as thread
|
||||
import threading
|
||||
try:
|
||||
import multiprocessing
|
||||
except ImportError:
|
||||
|
@ -35,12 +37,6 @@ MSG = 'Michael Gilfix was here\u1234\r\n'.encode('utf-8') ## test unicode string
|
|||
|
||||
VSOCKPORT = 1234
|
||||
|
||||
try:
|
||||
import _thread as thread
|
||||
import threading
|
||||
except ImportError:
|
||||
thread = None
|
||||
threading = None
|
||||
try:
|
||||
import _socket
|
||||
except ImportError:
|
||||
|
@ -143,18 +139,17 @@ class ThreadSafeCleanupTestCase(unittest.TestCase):
|
|||
with a recursive lock.
|
||||
"""
|
||||
|
||||
if threading:
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
self._cleanup_lock = threading.RLock()
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
self._cleanup_lock = threading.RLock()
|
||||
|
||||
def addCleanup(self, *args, **kwargs):
|
||||
with self._cleanup_lock:
|
||||
return super().addCleanup(*args, **kwargs)
|
||||
def addCleanup(self, *args, **kwargs):
|
||||
with self._cleanup_lock:
|
||||
return super().addCleanup(*args, **kwargs)
|
||||
|
||||
def doCleanups(self, *args, **kwargs):
|
||||
with self._cleanup_lock:
|
||||
return super().doCleanups(*args, **kwargs)
|
||||
def doCleanups(self, *args, **kwargs):
|
||||
with self._cleanup_lock:
|
||||
return super().doCleanups(*args, **kwargs)
|
||||
|
||||
class SocketCANTest(unittest.TestCase):
|
||||
|
||||
|
@ -407,7 +402,6 @@ class ThreadedRDSSocketTest(SocketRDSTest, ThreadableTest):
|
|||
ThreadableTest.clientTearDown(self)
|
||||
|
||||
@unittest.skipIf(fcntl is None, "need fcntl")
|
||||
@unittest.skipUnless(thread, 'Threading required for this test.')
|
||||
@unittest.skipUnless(HAVE_SOCKET_VSOCK,
|
||||
'VSOCK sockets required for this test.')
|
||||
@unittest.skipUnless(get_cid() != 2,
|
||||
|
@ -1684,7 +1678,6 @@ class BasicCANTest(unittest.TestCase):
|
|||
|
||||
|
||||
@unittest.skipUnless(HAVE_SOCKET_CAN, 'SocketCan required for this test.')
|
||||
@unittest.skipUnless(thread, 'Threading required for this test.')
|
||||
class CANTest(ThreadedCANSocketTest):
|
||||
|
||||
def __init__(self, methodName='runTest'):
|
||||
|
@ -1838,7 +1831,6 @@ class BasicRDSTest(unittest.TestCase):
|
|||
|
||||
|
||||
@unittest.skipUnless(HAVE_SOCKET_RDS, 'RDS sockets required for this test.')
|
||||
@unittest.skipUnless(thread, 'Threading required for this test.')
|
||||
class RDSTest(ThreadedRDSSocketTest):
|
||||
|
||||
def __init__(self, methodName='runTest'):
|
||||
|
@ -1977,7 +1969,7 @@ class BasicVSOCKTest(unittest.TestCase):
|
|||
s.getsockopt(socket.AF_VSOCK,
|
||||
socket.SO_VM_SOCKETS_BUFFER_MIN_SIZE))
|
||||
|
||||
@unittest.skipUnless(thread, 'Threading required for this test.')
|
||||
|
||||
class BasicTCPTest(SocketConnectedTest):
|
||||
|
||||
def __init__(self, methodName='runTest'):
|
||||
|
@ -2100,7 +2092,7 @@ class BasicTCPTest(SocketConnectedTest):
|
|||
def _testDetach(self):
|
||||
self.serv_conn.send(MSG)
|
||||
|
||||
@unittest.skipUnless(thread, 'Threading required for this test.')
|
||||
|
||||
class BasicUDPTest(ThreadedUDPSocketTest):
|
||||
|
||||
def __init__(self, methodName='runTest'):
|
||||
|
@ -3697,17 +3689,14 @@ class SendrecvmsgUDPTestBase(SendrecvmsgDgramFlagsBase,
|
|||
pass
|
||||
|
||||
@requireAttrs(socket.socket, "sendmsg")
|
||||
@unittest.skipUnless(thread, 'Threading required for this test.')
|
||||
class SendmsgUDPTest(SendmsgConnectionlessTests, SendrecvmsgUDPTestBase):
|
||||
pass
|
||||
|
||||
@requireAttrs(socket.socket, "recvmsg")
|
||||
@unittest.skipUnless(thread, 'Threading required for this test.')
|
||||
class RecvmsgUDPTest(RecvmsgTests, SendrecvmsgUDPTestBase):
|
||||
pass
|
||||
|
||||
@requireAttrs(socket.socket, "recvmsg_into")
|
||||
@unittest.skipUnless(thread, 'Threading required for this test.')
|
||||
class RecvmsgIntoUDPTest(RecvmsgIntoTests, SendrecvmsgUDPTestBase):
|
||||
pass
|
||||
|
||||
|
@ -3724,21 +3713,18 @@ class SendrecvmsgUDP6TestBase(SendrecvmsgDgramFlagsBase,
|
|||
@requireAttrs(socket.socket, "sendmsg")
|
||||
@unittest.skipUnless(support.IPV6_ENABLED, 'IPv6 required for this test.')
|
||||
@requireSocket("AF_INET6", "SOCK_DGRAM")
|
||||
@unittest.skipUnless(thread, 'Threading required for this test.')
|
||||
class SendmsgUDP6Test(SendmsgConnectionlessTests, SendrecvmsgUDP6TestBase):
|
||||
pass
|
||||
|
||||
@requireAttrs(socket.socket, "recvmsg")
|
||||
@unittest.skipUnless(support.IPV6_ENABLED, 'IPv6 required for this test.')
|
||||
@requireSocket("AF_INET6", "SOCK_DGRAM")
|
||||
@unittest.skipUnless(thread, 'Threading required for this test.')
|
||||
class RecvmsgUDP6Test(RecvmsgTests, SendrecvmsgUDP6TestBase):
|
||||
pass
|
||||
|
||||
@requireAttrs(socket.socket, "recvmsg_into")
|
||||
@unittest.skipUnless(support.IPV6_ENABLED, 'IPv6 required for this test.')
|
||||
@requireSocket("AF_INET6", "SOCK_DGRAM")
|
||||
@unittest.skipUnless(thread, 'Threading required for this test.')
|
||||
class RecvmsgIntoUDP6Test(RecvmsgIntoTests, SendrecvmsgUDP6TestBase):
|
||||
pass
|
||||
|
||||
|
@ -3746,7 +3732,6 @@ class RecvmsgIntoUDP6Test(RecvmsgIntoTests, SendrecvmsgUDP6TestBase):
|
|||
@unittest.skipUnless(support.IPV6_ENABLED, 'IPv6 required for this test.')
|
||||
@requireAttrs(socket, "IPPROTO_IPV6")
|
||||
@requireSocket("AF_INET6", "SOCK_DGRAM")
|
||||
@unittest.skipUnless(thread, 'Threading required for this test.')
|
||||
class RecvmsgRFC3542AncillaryUDP6Test(RFC3542AncillaryTest,
|
||||
SendrecvmsgUDP6TestBase):
|
||||
pass
|
||||
|
@ -3755,7 +3740,6 @@ class RecvmsgRFC3542AncillaryUDP6Test(RFC3542AncillaryTest,
|
|||
@unittest.skipUnless(support.IPV6_ENABLED, 'IPv6 required for this test.')
|
||||
@requireAttrs(socket, "IPPROTO_IPV6")
|
||||
@requireSocket("AF_INET6", "SOCK_DGRAM")
|
||||
@unittest.skipUnless(thread, 'Threading required for this test.')
|
||||
class RecvmsgIntoRFC3542AncillaryUDP6Test(RecvmsgIntoMixin,
|
||||
RFC3542AncillaryTest,
|
||||
SendrecvmsgUDP6TestBase):
|
||||
|
@ -3767,18 +3751,15 @@ class SendrecvmsgTCPTestBase(SendrecvmsgConnectedBase,
|
|||
pass
|
||||
|
||||
@requireAttrs(socket.socket, "sendmsg")
|
||||
@unittest.skipUnless(thread, 'Threading required for this test.')
|
||||
class SendmsgTCPTest(SendmsgStreamTests, SendrecvmsgTCPTestBase):
|
||||
pass
|
||||
|
||||
@requireAttrs(socket.socket, "recvmsg")
|
||||
@unittest.skipUnless(thread, 'Threading required for this test.')
|
||||
class RecvmsgTCPTest(RecvmsgTests, RecvmsgGenericStreamTests,
|
||||
SendrecvmsgTCPTestBase):
|
||||
pass
|
||||
|
||||
@requireAttrs(socket.socket, "recvmsg_into")
|
||||
@unittest.skipUnless(thread, 'Threading required for this test.')
|
||||
class RecvmsgIntoTCPTest(RecvmsgIntoTests, RecvmsgGenericStreamTests,
|
||||
SendrecvmsgTCPTestBase):
|
||||
pass
|
||||
|
@ -3791,13 +3772,11 @@ class SendrecvmsgSCTPStreamTestBase(SendrecvmsgSCTPFlagsBase,
|
|||
|
||||
@requireAttrs(socket.socket, "sendmsg")
|
||||
@requireSocket("AF_INET", "SOCK_STREAM", "IPPROTO_SCTP")
|
||||
@unittest.skipUnless(thread, 'Threading required for this test.')
|
||||
class SendmsgSCTPStreamTest(SendmsgStreamTests, SendrecvmsgSCTPStreamTestBase):
|
||||
pass
|
||||
|
||||
@requireAttrs(socket.socket, "recvmsg")
|
||||
@requireSocket("AF_INET", "SOCK_STREAM", "IPPROTO_SCTP")
|
||||
@unittest.skipUnless(thread, 'Threading required for this test.')
|
||||
class RecvmsgSCTPStreamTest(RecvmsgTests, RecvmsgGenericStreamTests,
|
||||
SendrecvmsgSCTPStreamTestBase):
|
||||
|
||||
|
@ -3811,7 +3790,6 @@ class RecvmsgSCTPStreamTest(RecvmsgTests, RecvmsgGenericStreamTests,
|
|||
|
||||
@requireAttrs(socket.socket, "recvmsg_into")
|
||||
@requireSocket("AF_INET", "SOCK_STREAM", "IPPROTO_SCTP")
|
||||
@unittest.skipUnless(thread, 'Threading required for this test.')
|
||||
class RecvmsgIntoSCTPStreamTest(RecvmsgIntoTests, RecvmsgGenericStreamTests,
|
||||
SendrecvmsgSCTPStreamTestBase):
|
||||
|
||||
|
@ -3830,33 +3808,28 @@ class SendrecvmsgUnixStreamTestBase(SendrecvmsgConnectedBase,
|
|||
|
||||
@requireAttrs(socket.socket, "sendmsg")
|
||||
@requireAttrs(socket, "AF_UNIX")
|
||||
@unittest.skipUnless(thread, 'Threading required for this test.')
|
||||
class SendmsgUnixStreamTest(SendmsgStreamTests, SendrecvmsgUnixStreamTestBase):
|
||||
pass
|
||||
|
||||
@requireAttrs(socket.socket, "recvmsg")
|
||||
@requireAttrs(socket, "AF_UNIX")
|
||||
@unittest.skipUnless(thread, 'Threading required for this test.')
|
||||
class RecvmsgUnixStreamTest(RecvmsgTests, RecvmsgGenericStreamTests,
|
||||
SendrecvmsgUnixStreamTestBase):
|
||||
pass
|
||||
|
||||
@requireAttrs(socket.socket, "recvmsg_into")
|
||||
@requireAttrs(socket, "AF_UNIX")
|
||||
@unittest.skipUnless(thread, 'Threading required for this test.')
|
||||
class RecvmsgIntoUnixStreamTest(RecvmsgIntoTests, RecvmsgGenericStreamTests,
|
||||
SendrecvmsgUnixStreamTestBase):
|
||||
pass
|
||||
|
||||
@requireAttrs(socket.socket, "sendmsg", "recvmsg")
|
||||
@requireAttrs(socket, "AF_UNIX", "SOL_SOCKET", "SCM_RIGHTS")
|
||||
@unittest.skipUnless(thread, 'Threading required for this test.')
|
||||
class RecvmsgSCMRightsStreamTest(SCMRightsTest, SendrecvmsgUnixStreamTestBase):
|
||||
pass
|
||||
|
||||
@requireAttrs(socket.socket, "sendmsg", "recvmsg_into")
|
||||
@requireAttrs(socket, "AF_UNIX", "SOL_SOCKET", "SCM_RIGHTS")
|
||||
@unittest.skipUnless(thread, 'Threading required for this test.')
|
||||
class RecvmsgIntoSCMRightsStreamTest(RecvmsgIntoMixin, SCMRightsTest,
|
||||
SendrecvmsgUnixStreamTestBase):
|
||||
pass
|
||||
|
@ -3944,7 +3917,6 @@ class InterruptedRecvTimeoutTest(InterruptedTimeoutBase, UDPTestBase):
|
|||
@requireAttrs(signal, "siginterrupt")
|
||||
@unittest.skipUnless(hasattr(signal, "alarm") or hasattr(signal, "setitimer"),
|
||||
"Don't have signal.alarm or signal.setitimer")
|
||||
@unittest.skipUnless(thread, 'Threading required for this test.')
|
||||
class InterruptedSendTimeoutTest(InterruptedTimeoutBase,
|
||||
ThreadSafeCleanupTestCase,
|
||||
SocketListeningTestMixin, TCPTestBase):
|
||||
|
@ -3997,7 +3969,6 @@ class InterruptedSendTimeoutTest(InterruptedTimeoutBase,
|
|||
self.checkInterruptedSend(self.serv_conn.sendmsg, [b"a"*512])
|
||||
|
||||
|
||||
@unittest.skipUnless(thread, 'Threading required for this test.')
|
||||
class TCPCloserTest(ThreadedTCPSocketTest):
|
||||
|
||||
def testClose(self):
|
||||
|
@ -4017,7 +3988,7 @@ class TCPCloserTest(ThreadedTCPSocketTest):
|
|||
self.cli.connect((HOST, self.port))
|
||||
time.sleep(1.0)
|
||||
|
||||
@unittest.skipUnless(thread, 'Threading required for this test.')
|
||||
|
||||
class BasicSocketPairTest(SocketPairTest):
|
||||
|
||||
def __init__(self, methodName='runTest'):
|
||||
|
@ -4052,7 +4023,7 @@ class BasicSocketPairTest(SocketPairTest):
|
|||
msg = self.cli.recv(1024)
|
||||
self.assertEqual(msg, MSG)
|
||||
|
||||
@unittest.skipUnless(thread, 'Threading required for this test.')
|
||||
|
||||
class NonBlockingTCPTests(ThreadedTCPSocketTest):
|
||||
|
||||
def __init__(self, methodName='runTest'):
|
||||
|
@ -4180,7 +4151,7 @@ class NonBlockingTCPTests(ThreadedTCPSocketTest):
|
|||
time.sleep(0.1)
|
||||
self.cli.send(MSG)
|
||||
|
||||
@unittest.skipUnless(thread, 'Threading required for this test.')
|
||||
|
||||
class FileObjectClassTestCase(SocketConnectedTest):
|
||||
"""Unit tests for the object returned by socket.makefile()
|
||||
|
||||
|
@ -4564,7 +4535,6 @@ class NetworkConnectionNoServer(unittest.TestCase):
|
|||
socket.create_connection((HOST, 1234))
|
||||
|
||||
|
||||
@unittest.skipUnless(thread, 'Threading required for this test.')
|
||||
class NetworkConnectionAttributesTest(SocketTCPTest, ThreadableTest):
|
||||
|
||||
def __init__(self, methodName='runTest'):
|
||||
|
@ -4633,7 +4603,7 @@ class NetworkConnectionAttributesTest(SocketTCPTest, ThreadableTest):
|
|||
self.addCleanup(self.cli.close)
|
||||
self.assertEqual(self.cli.gettimeout(), 30)
|
||||
|
||||
@unittest.skipUnless(thread, 'Threading required for this test.')
|
||||
|
||||
class NetworkConnectionBehaviourTest(SocketTCPTest, ThreadableTest):
|
||||
|
||||
def __init__(self, methodName='runTest'):
|
||||
|
@ -4877,7 +4847,7 @@ class TestUnixDomain(unittest.TestCase):
|
|||
self.addCleanup(support.unlink, path)
|
||||
self.assertEqual(self.sock.getsockname(), path)
|
||||
|
||||
@unittest.skipUnless(thread, 'Threading required for this test.')
|
||||
|
||||
class BufferIOTest(SocketConnectedTest):
|
||||
"""
|
||||
Test the buffer versions of socket.recv() and socket.send().
|
||||
|
@ -5050,7 +5020,6 @@ class TIPCThreadableTest(unittest.TestCase, ThreadableTest):
|
|||
self.cli.close()
|
||||
|
||||
|
||||
@unittest.skipUnless(thread, 'Threading required for this test.')
|
||||
class ContextManagersTest(ThreadedTCPSocketTest):
|
||||
|
||||
def _testSocketClass(self):
|
||||
|
@ -5312,7 +5281,6 @@ class TestSocketSharing(SocketTCPTest):
|
|||
source.close()
|
||||
|
||||
|
||||
@unittest.skipUnless(thread, 'Threading required for this test.')
|
||||
class SendfileUsingSendTest(ThreadedTCPSocketTest):
|
||||
"""
|
||||
Test the send() implementation of socket.sendfile().
|
||||
|
@ -5570,7 +5538,6 @@ class SendfileUsingSendTest(ThreadedTCPSocketTest):
|
|||
meth, file, count=-1)
|
||||
|
||||
|
||||
@unittest.skipUnless(thread, 'Threading required for this test.')
|
||||
@unittest.skipUnless(hasattr(os, "sendfile"),
|
||||
'os.sendfile() required for this test.')
|
||||
class SendfileUsingSendfileTest(SendfileUsingSendTest):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue