Skip to content

Commit 82be245

Browse files
committed
Add tests for setsockopt errors
1 parent f85c7dc commit 82be245

1 file changed

Lines changed: 25 additions & 0 deletions

File tree

Lib/test/test_socket.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1538,6 +1538,31 @@ def testSetSockOpt(self):
15381538
reuse = sock.getsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR)
15391539
self.assertFalse(reuse == 0, "failed to set reuse mode")
15401540

1541+
@unittest.skipIf(_testcapi is None, "requires _testcapi")
1542+
def test_setsockopt_errors(self):
1543+
# See issue #107546.
1544+
from _testcapi import INT_MAX, INT_MIN
1545+
1546+
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
1547+
self.addCleanup(sock.close)
1548+
1549+
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) # No error expected.
1550+
1551+
with self.assertRaises(OverflowError):
1552+
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, INT_MAX + 1)
1553+
1554+
with self.assertRaises(OverflowError):
1555+
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, INT_MIN - 1)
1556+
1557+
with self.assertRaises(OverflowError):
1558+
sock.setsockopt(socket.SOL_SOCKET, INT_MAX + 1, 1)
1559+
1560+
with self.assertRaises(OverflowError):
1561+
sock.setsockopt(INT_MAX + 1, socket.SO_REUSEADDR, 1)
1562+
1563+
with self.assertRaises(TypeError):
1564+
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, dict())
1565+
15411566
def testSendAfterClose(self):
15421567
# testing send() after close() with timeout
15431568
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock:

0 commit comments

Comments
 (0)