Skip to content

Commit ddcdb0d

Browse files
committed
Add tests for setsockopt errors
1 parent 377701d commit ddcdb0d

File tree

1 file changed

+24
-0
lines changed

1 file changed

+24
-0
lines changed

Lib/test/test_socket.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1655,6 +1655,30 @@ def test_getaddrinfo_int_port_overflow(self):
16551655
socket.getaddrinfo(None, 0, type=socket.SOCK_STREAM) # No error expected.
16561656
socket.getaddrinfo(None, 0xffff, type=socket.SOCK_STREAM) # No error expected.
16571657

1658+
def test_setsockopt_errors(self):
1659+
# See issue #107546.
1660+
from _testcapi import INT_MAX, INT_MIN
1661+
1662+
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
1663+
self.addCleanup(sock.close)
1664+
1665+
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) # No error expected.
1666+
1667+
with self.assertRaises(OverflowError):
1668+
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, INT_MAX + 1)
1669+
1670+
with self.assertRaises(OverflowError):
1671+
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, INT_MIN - 1)
1672+
1673+
with self.assertRaises(OverflowError):
1674+
sock.setsockopt(socket.SOL_SOCKET, INT_MAX + 1, 1)
1675+
1676+
with self.assertRaises(OverflowError):
1677+
sock.setsockopt(INT_MAX + 1, socket.SO_REUSEADDR, 1)
1678+
1679+
with self.assertRaises(TypeError):
1680+
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, dict())
1681+
16581682
def test_getnameinfo(self):
16591683
# only IP addresses are allowed
16601684
self.assertRaises(OSError, socket.getnameinfo, ('mail.python.org',0), 0)

0 commit comments

Comments
 (0)