diff options
author | Jason R. Coombs <jaraco@jaraco.com> | 2019-02-07 13:22:45 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-02-07 13:22:45 (GMT) |
commit | f289084c83190cc72db4a70c58f007ec62e75247 (patch) | |
tree | 6fe7fe86d58952d6eb337add411c7da5ea53fc86 /Lib/test | |
parent | 2848d9d29914948621bce26bf0d9a89f2e19b97b (diff) | |
download | cpython-f289084c83190cc72db4a70c58f007ec62e75247.zip cpython-f289084c83190cc72db4a70c58f007ec62e75247.tar.gz cpython-f289084c83190cc72db4a70c58f007ec62e75247.tar.bz2 |
bpo-24209: In http.server script, rely on getaddrinfo to bind to preferred address based on the bind parameter. (#11767)
In http.server script, rely on getaddrinfo to bind to preferred address based on the bind parameter.
As a result, now IPv6 is used as the default (including IPv4 on dual-stack systems). Enhanced tests.
Diffstat (limited to 'Lib/test')
-rw-r--r-- | Lib/test/test_httpservers.py | 68 |
1 files changed, 55 insertions, 13 deletions
diff --git a/Lib/test/test_httpservers.py b/Lib/test/test_httpservers.py index 3d8e0af..8357ee9 100644 --- a/Lib/test/test_httpservers.py +++ b/Lib/test/test_httpservers.py @@ -1118,21 +1118,63 @@ class MiscTestCase(unittest.TestCase): class ScriptTestCase(unittest.TestCase): + + def mock_server_class(self): + return mock.MagicMock( + return_value=mock.MagicMock( + __enter__=mock.MagicMock( + return_value=mock.MagicMock( + socket=mock.MagicMock( + getsockname=lambda: ('', 0), + ), + ), + ), + ), + ) + + @mock.patch('builtins.print') + def test_server_test_unspec(self, _): + mock_server = self.mock_server_class() + server.test(ServerClass=mock_server, bind=None) + self.assertIn( + mock_server.address_family, + (socket.AF_INET6, socket.AF_INET), + ) + + @mock.patch('builtins.print') + def test_server_test_localhost(self, _): + mock_server = self.mock_server_class() + server.test(ServerClass=mock_server, bind="localhost") + self.assertIn( + mock_server.address_family, + (socket.AF_INET6, socket.AF_INET), + ) + + ipv6_addrs = ( + "::", + "2001:0db8:85a3:0000:0000:8a2e:0370:7334", + "::1", + ) + + ipv4_addrs = ( + "0.0.0.0", + "8.8.8.8", + "127.0.0.1", + ) + @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) + for bind in self.ipv6_addrs: + mock_server = self.mock_server_class() + server.test(ServerClass=mock_server, bind=bind) + self.assertEqual(mock_server.address_family, socket.AF_INET6) + + @mock.patch('builtins.print') + def test_server_test_ipv4(self, _): + for bind in self.ipv4_addrs: + mock_server = self.mock_server_class() + server.test(ServerClass=mock_server, bind=bind) + self.assertEqual(mock_server.address_family, socket.AF_INET) def test_main(verbose=None): |