summaryrefslogtreecommitdiffstats
path: root/Lib/test
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/test')
-rw-r--r--Lib/test/test_socket.py55
1 files changed, 55 insertions, 0 deletions
diff --git a/Lib/test/test_socket.py b/Lib/test/test_socket.py
index 11b2a38..ce816cd 100644
--- a/Lib/test/test_socket.py
+++ b/Lib/test/test_socket.py
@@ -114,6 +114,19 @@ def _have_socket_vsock():
return ret
+def _have_socket_bluetooth():
+ """Check whether AF_BLUETOOTH sockets are supported on this host."""
+ try:
+ # RFCOMM is supported by all platforms with bluetooth support. Windows
+ # does not support omitting the protocol.
+ s = socket.socket(socket.AF_BLUETOOTH, socket.SOCK_STREAM, socket.BTPROTO_RFCOMM)
+ except (AttributeError, OSError):
+ return False
+ else:
+ s.close()
+ return True
+
+
@contextlib.contextmanager
def socket_setdefaulttimeout(timeout):
old_timeout = socket.getdefaulttimeout()
@@ -138,6 +151,8 @@ HAVE_SOCKET_VSOCK = _have_socket_vsock()
HAVE_SOCKET_UDPLITE = hasattr(socket, "IPPROTO_UDPLITE")
+HAVE_SOCKET_BLUETOOTH = _have_socket_bluetooth()
+
# Size in bytes of the int type
SIZEOF_INT = array.array("i").itemsize
@@ -2257,6 +2272,45 @@ class BasicVSOCKTest(unittest.TestCase):
socket.SO_VM_SOCKETS_BUFFER_MIN_SIZE))
+@unittest.skipUnless(HAVE_SOCKET_BLUETOOTH,
+ 'Bluetooth sockets required for this test.')
+class BasicBluetoothTest(unittest.TestCase):
+
+ def testBluetoothConstants(self):
+ socket.BDADDR_ANY
+ socket.BDADDR_LOCAL
+ socket.AF_BLUETOOTH
+ socket.BTPROTO_RFCOMM
+
+ if sys.platform != "win32":
+ socket.BTPROTO_HCI
+ socket.SOL_HCI
+ socket.BTPROTO_L2CAP
+
+ if not sys.platform.startswith("freebsd"):
+ socket.BTPROTO_SCO
+
+ def testCreateRfcommSocket(self):
+ with socket.socket(socket.AF_BLUETOOTH, socket.SOCK_STREAM, socket.BTPROTO_RFCOMM) as s:
+ pass
+
+ @unittest.skipIf(sys.platform == "win32", "windows does not support L2CAP sockets")
+ def testCreateL2capSocket(self):
+ with socket.socket(socket.AF_BLUETOOTH, socket.SOCK_SEQPACKET, socket.BTPROTO_L2CAP) as s:
+ pass
+
+ @unittest.skipIf(sys.platform == "win32", "windows does not support HCI sockets")
+ def testCreateHciSocket(self):
+ with socket.socket(socket.AF_BLUETOOTH, socket.SOCK_RAW, socket.BTPROTO_HCI) as s:
+ pass
+
+ @unittest.skipIf(sys.platform == "win32" or sys.platform.startswith("freebsd"),
+ "windows and freebsd do not support SCO sockets")
+ def testCreateScoSocket(self):
+ with socket.socket(socket.AF_BLUETOOTH, socket.SOCK_SEQPACKET, socket.BTPROTO_SCO) as s:
+ pass
+
+
class BasicTCPTest(SocketConnectedTest):
def __init__(self, methodName='runTest'):
@@ -6416,6 +6470,7 @@ def test_main():
BasicVSOCKTest,
ThreadedVSOCKSocketStreamTest,
])
+ tests.append(BasicBluetoothTest)
tests.extend([
CmsgMacroTests,
SendmsgUDPTest,