diff options
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/http/server.py | 3 | ||||
-rw-r--r-- | Lib/test/test_httpservers.py | 20 |
2 files changed, 23 insertions, 0 deletions
diff --git a/Lib/http/server.py b/Lib/http/server.py index ca2dd50..22d865f 100644 --- a/Lib/http/server.py +++ b/Lib/http/server.py @@ -1226,6 +1226,9 @@ def test(HandlerClass=BaseHTTPRequestHandler, """ server_address = (bind, port) + if ':' in bind: + ServerClass.address_family = socket.AF_INET6 + HandlerClass.protocol_version = protocol with ServerClass(server_address, HandlerClass) as httpd: sa = httpd.socket.getsockname() diff --git a/Lib/test/test_httpservers.py b/Lib/test/test_httpservers.py index cc829a5..3d8e0af 100644 --- a/Lib/test/test_httpservers.py +++ b/Lib/test/test_httpservers.py @@ -9,6 +9,7 @@ from http.server import BaseHTTPRequestHandler, HTTPServer, \ from http import server, HTTPStatus import os +import socket import sys import re import base64 @@ -1116,6 +1117,24 @@ class MiscTestCase(unittest.TestCase): self.assertCountEqual(server.__all__, expected) +class ScriptTestCase(unittest.TestCase): + @mock.patch('builtins.print') + def test_server_test_ipv6(self, _): + mock_server = mock.MagicMock() + server.test(ServerClass=mock_server, bind="::") + self.assertEqual(mock_server.address_family, socket.AF_INET6) + + mock_server.reset_mock() + server.test(ServerClass=mock_server, + bind="2001:0db8:85a3:0000:0000:8a2e:0370:7334") + self.assertEqual(mock_server.address_family, socket.AF_INET6) + + mock_server.reset_mock() + server.test(ServerClass=mock_server, + bind="::1") + self.assertEqual(mock_server.address_family, socket.AF_INET6) + + def test_main(verbose=None): cwd = os.getcwd() try: @@ -1127,6 +1146,7 @@ def test_main(verbose=None): CGIHTTPServerTestCase, SimpleHTTPRequestHandlerTestCase, MiscTestCase, + ScriptTestCase ) finally: os.chdir(cwd) |