]> granicus.if.org Git - python/commitdiff
bpo-28728: clarify possible test failure due to ISP (GH-412)
authorXiang Zhang <angwerzx@126.com>
Tue, 7 Mar 2017 03:06:09 +0000 (11:06 +0800)
committerGitHub <noreply@github.com>
Tue, 7 Mar 2017 03:06:09 +0000 (11:06 +0800)
Lib/test/test_socket.py

index 81f7cf774bde4b43da5d8a2a6cc42693152c0bfa..f8e5b369ef23b6c9d022069ab1a1d8947c28bce1 100644 (file)
@@ -803,11 +803,6 @@ class GeneralModuleTests(unittest.TestCase):
             self.fail("Error testing host resolution mechanisms. (fqdn: %s, all: %s)" % (fqhn, repr(all_host_names)))
 
     def test_host_resolution(self):
-        for addr in ['0.1.1.~1', '1+.1.1.1', '::1q', '::1::2',
-                     '1:1:1:1:1:1:1:1:1']:
-            self.assertRaises(OSError, socket.gethostbyname, addr)
-            self.assertRaises(OSError, socket.gethostbyaddr, addr)
-
         for addr in [support.HOST, '10.0.0.1', '255.255.255.255']:
             self.assertEqual(socket.gethostbyname(addr), addr)
 
@@ -816,6 +811,21 @@ class GeneralModuleTests(unittest.TestCase):
         for host in [support.HOST]:
             self.assertIn(host, socket.gethostbyaddr(host)[2])
 
+    def test_host_resolution_bad_address(self):
+        # These are all malformed IP addresses and expected not to resolve to
+        # any result.  But some ISPs, e.g. AWS, may successfully resolve these
+        # IPs.
+        explanation = (
+            "resolving an invalid IP address did not raise OSError; "
+            "can be caused by a broken DNS server"
+        )
+        for addr in ['0.1.1.~1', '1+.1.1.1', '::1q', '::1::2',
+                     '1:1:1:1:1:1:1:1:1']:
+            with self.assertRaises(OSError):
+                socket.gethostbyname(addr)
+            with self.assertRaises(OSError, msg=explanation):
+                socket.gethostbyaddr(addr)
+
     @unittest.skipUnless(hasattr(socket, 'sethostname'), "test needs socket.sethostname()")
     @unittest.skipUnless(hasattr(socket, 'gethostname'), "test needs socket.gethostname()")
     def test_sethostname(self):