]> granicus.if.org Git - python/commitdiff
Issue #26936: Fix the test_socket failures on Android - getservbyname(),
authorXavier de Gaye <xdegaye@users.sourceforge.net>
Tue, 13 Dec 2016 08:22:01 +0000 (09:22 +0100)
committerXavier de Gaye <xdegaye@users.sourceforge.net>
Tue, 13 Dec 2016 08:22:01 +0000 (09:22 +0100)
getservbyport() and getaddrinfo() are broken on some Android API levels.

Lib/test/test_socket.py
Misc/NEWS

index a5657c70c6646923b3c93f42601f09deae425a41..8dad49f18d9c1c8cdb2ce7649acfa2920623959b 100644 (file)
@@ -932,8 +932,11 @@ class GeneralModuleTests(unittest.TestCase):
         else:
             raise OSError
         # Try same call with optional protocol omitted
-        port2 = socket.getservbyname(service)
-        eq(port, port2)
+        # Issue #26936: Android getservbyname() was broken before API 23.
+        if (not hasattr(sys, 'getandroidapilevel') or
+                sys.getandroidapilevel() >= 23):
+            port2 = socket.getservbyname(service)
+            eq(port, port2)
         # Try udp, but don't barf if it doesn't exist
         try:
             udpport = socket.getservbyname(service, 'udp')
@@ -942,7 +945,9 @@ class GeneralModuleTests(unittest.TestCase):
         else:
             eq(udpport, port)
         # Now make sure the lookup by port returns the same service name
-        eq(socket.getservbyport(port2), service)
+        # Issue #26936: Android getservbyport() is broken.
+        if not support.is_android:
+            eq(socket.getservbyport(port2), service)
         eq(socket.getservbyport(port, 'tcp'), service)
         if udpport is not None:
             eq(socket.getservbyport(udpport, 'udp'), service)
@@ -1275,7 +1280,10 @@ class GeneralModuleTests(unittest.TestCase):
             socket.getaddrinfo('::1', 80)
         # port can be a string service name such as "http", a numeric
         # port number or None
-        socket.getaddrinfo(HOST, "http")
+        # Issue #26936: Android getaddrinfo() was broken before API level 23.
+        if (not hasattr(sys, 'getandroidapilevel') or
+                sys.getandroidapilevel() >= 23):
+            socket.getaddrinfo(HOST, "http")
         socket.getaddrinfo(HOST, 80)
         socket.getaddrinfo(HOST, None)
         # test family and socktype filters
index baa2d5e89fa95070db5181339bc06389154fdc4a..fe9dc95890804f3680fd6993e5380b1d7625ebe5 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -588,6 +588,9 @@ Tools/Demos
 Tests
 -----
 
+ - Issue #26936: Fix the test_socket failures on Android - getservbyname(),
+   getservbyport() and getaddrinfo() are broken on some Android API levels.
+
 - Issue #28666: Now test.support.rmtree is able to remove unwritable or
   unreadable directories.