diff -r d0ed9643cd57 Lib/test/support/__init__.py --- a/Lib/test/support/__init__.py Thu Nov 17 23:31:29 2016 -0600 +++ b/Lib/test/support/__init__.py Fri Nov 18 16:35:07 2016 +0100 @@ -92,7 +92,8 @@ "anticipate_failure", "load_package_tests", "detect_api_mismatch", "check__all__", "requires_android_level", "requires_multiprocessing_queue", # sys - "is_jython", "is_android", "check_impl_detail", "unix_shell", + "is_jython", "is_android", "less_than_android_api", "check_impl_detail", + "unix_shell", # network "HOST", "IPV6_ENABLED", "find_unused_port", "bind_port", "open_urlresource", # processes @@ -738,6 +739,9 @@ _ANDROID_API_LEVEL = sysconfig.get_config_var('ANDROID_API_LEVEL') is_android = (_ANDROID_API_LEVEL is not None and _ANDROID_API_LEVEL > 0) +def less_than_android_api(level): + return is_android and _ANDROID_API_LEVEL < level + if sys.platform != 'win32': unix_shell = '/system/bin/sh' if is_android else '/bin/sh' else: @@ -1727,7 +1731,7 @@ return unittest.skip("resource {0!r} is not enabled".format(resource)) def requires_android_level(level, reason): - if is_android and _ANDROID_API_LEVEL < level: + if less_than_android_api(level): return unittest.skip('%s at Android API level %d' % (reason, _ANDROID_API_LEVEL)) else: diff -r d0ed9643cd57 Lib/test/test_socket.py --- a/Lib/test/test_socket.py Thu Nov 17 23:31:29 2016 -0600 +++ b/Lib/test/test_socket.py Fri Nov 18 16:35:07 2016 +0100 @@ -932,8 +932,10 @@ else: raise OSError # Try same call with optional protocol omitted - port2 = socket.getservbyname(service) - eq(port, port2) + # Issue #26936: Android getservbyname is buggy. + if not support.less_than_android_api(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 +944,9 @@ 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 buggy. + 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 +1279,9 @@ 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 is buggy. + if not support.less_than_android_api(23): + socket.getaddrinfo(HOST, "http") socket.getaddrinfo(HOST, 80) socket.getaddrinfo(HOST, None) # test family and socktype filters