Commit e9af901a authored by Jason Madden's avatar Jason Madden

Make libuv the default backend on Windows. Fixes #1163.

parent e8b34c4e
...@@ -19,6 +19,8 @@ Platform Support ...@@ -19,6 +19,8 @@ Platform Support
- Travis CI tests on Python 3.7.0b3. - Travis CI tests on Python 3.7.0b3.
- Windows now defaults to the libuv backend. See :issue:`1163`.
Bug Fixes Bug Fixes
--------- ---------
......
...@@ -11,14 +11,8 @@ environment: ...@@ -11,14 +11,8 @@ environment:
# a later point release. # a later point release.
- PYTHON: "C:\\pypy2-v5.10.0-win32" - PYTHON: "C:\\Python27-x64"
PYTHON_ID: "pypy" PYTHON_VERSION: "2.7.x" # currently 2.7.13
PYTHON_EXE: pypy
PYTHON_VERSION: "2.7.x"
PYTHON_ARCH: "32"
- PYTHON: "C:\\Python36-x64"
PYTHON_VERSION: "3.6.x" # currently 3.6.0
PYTHON_ARCH: "64" PYTHON_ARCH: "64"
PYTHON_EXE: python PYTHON_EXE: python
...@@ -26,12 +20,12 @@ environment: ...@@ -26,12 +20,12 @@ environment:
PYTHON_VERSION: "3.6.x" # currently 3.6.0 PYTHON_VERSION: "3.6.x" # currently 3.6.0
PYTHON_ARCH: "64" PYTHON_ARCH: "64"
PYTHON_EXE: python PYTHON_EXE: python
GEVENT_LOOP: libuv
- PYTHON: "C:\\Python27-x64" - PYTHON: "C:\\pypy2-v5.10.0-win32"
PYTHON_VERSION: "2.7.x" # currently 2.7.13 PYTHON_ID: "pypy"
PYTHON_ARCH: "64" PYTHON_EXE: pypy
PYTHON_EXE: python PYTHON_VERSION: "2.7.x"
PYTHON_ARCH: "32"
- PYTHON: "C:\\Python34-x64" - PYTHON: "C:\\Python34-x64"
PYTHON_VERSION: "3.4.x" # currently 3.4.4 PYTHON_VERSION: "3.4.x" # currently 3.4.4
......
...@@ -16,6 +16,7 @@ import sys ...@@ -16,6 +16,7 @@ import sys
import textwrap import textwrap
from gevent._compat import string_types from gevent._compat import string_types
from gevent._compat import WIN
__all__ = [ __all__ = [
'config', 'config',
...@@ -353,12 +354,19 @@ class Loop(ImportableSetting, Setting): ...@@ -353,12 +354,19 @@ class Loop(ImportableSetting, Setting):
desc = """\ desc = """\
The kind of the loop we use. The kind of the loop we use.
On Windows, this defaults to libuv, while on
other platforms it defaults to libev.
""" """
default = [ default = [
'libev-cext', 'libev-cext',
'libev-cffi', 'libev-cffi',
'libuv-cffi', 'libuv-cffi',
] if not WIN else [
'libuv-cffi',
'libev-cext',
'libev-cffi',
] ]
shortname_map = { shortname_map = {
......
...@@ -301,17 +301,12 @@ if LIBUV: ...@@ -301,17 +301,12 @@ if LIBUV:
if WIN and PYPY: if WIN and PY2:
# From PyPy2-v5.9.0, using its version of tests, # From PyPy2-v5.9.0 and CPython 2.7.14, using its version of tests,
# which do work on darwin (and possibly linux?) # which do work on darwin (and possibly linux?)
# I can't produce them in a local VM running Windows 10 # I can't produce them in a local VM running Windows 10
# and the same pypy version. # and the same pypy version.
disabled_tests += [ disabled_tests += [
# appears to timeout?
'test_threading.ThreadTests.test_finalize_with_trace',
'test_asyncore.DispatcherWithSendTests_UsePoll.test_send',
'test_asyncore.DispatcherWithSendTests.test_send',
# These, which use asyncore, fail with # These, which use asyncore, fail with
# 'NoneType is not iterable' on 'conn, addr = self.accept()' # 'NoneType is not iterable' on 'conn, addr = self.accept()'
# That returns None when the underlying socket raises # That returns None when the underlying socket raises
...@@ -358,13 +353,6 @@ if LIBUV: ...@@ -358,13 +353,6 @@ if LIBUV:
# This one times out, but it's still a non-blocking socket # This one times out, but it's still a non-blocking socket
'test_ftplib.TestFTPClass.test_makeport', 'test_ftplib.TestFTPClass.test_makeport',
# More unexpected timeouts
'test_smtplib.TooLongLineTests.testLineTooLong',
'test_smtplib.GeneralTests.testTimeoutValue',
'test_ssl.ContextTests.test__https_verify_envvar',
'test_subprocess.ProcessTestCase.test_check_output',
'test_telnetlib.ReadTests.test_read_eager_A',
# A timeout, possibly because of the way we handle interrupts? # A timeout, possibly because of the way we handle interrupts?
'test_socketserver.SocketServerTest.test_InterruptedServerSelectCall', 'test_socketserver.SocketServerTest.test_InterruptedServerSelectCall',
'test_socketserver.SocketServerTest.test_InterruptServerSelectCall', 'test_socketserver.SocketServerTest.test_InterruptServerSelectCall',
...@@ -393,36 +381,64 @@ if LIBUV: ...@@ -393,36 +381,64 @@ if LIBUV:
'test_httpservers.BaseHTTPServerTestCase.test_version_digits', 'test_httpservers.BaseHTTPServerTestCase.test_version_digits',
'test_httpservers.BaseHTTPServerTestCase.test_version_invalid', 'test_httpservers.BaseHTTPServerTestCase.test_version_invalid',
'test_httpservers.BaseHTTPServerTestCase.test_version_none', 'test_httpservers.BaseHTTPServerTestCase.test_version_none',
'test_httpservers.SimpleHTTPServerTestCase.test_get',
'test_httpservers.SimpleHTTPServerTestCase.test_head',
'test_httpservers.SimpleHTTPServerTestCase.test_invalid_requests',
'test_httpservers.SimpleHTTPServerTestCase.test_path_without_leading_slash',
'test_httpservers.CGIHTTPServerTestCase.test_invaliduri',
'test_httpservers.CGIHTTPServerTestCase.test_issue19435',
# But on Windows, our gc fix for that doesn't work anyway # Sometimes raises LoopExit on CPython
# so we have to disable it. 'test_socket.BufferIOTest.testRecvFromIntoArray',
'test_urllib2_localnet.TestUrlopen.test_https_with_cafile',
# Unexpected timeouts sometimes
'test_smtplib.TooLongLineTests.testLineTooLong',
'test_smtplib.GeneralTests.testTimeoutValue',
# These tests hang. see above.
'test_threading.ThreadJoinOnShutdown.test_1_join_on_shutdown',
'test_threading.ThreadingExceptionTests.test_print_exception',
# Our copy of these in test__subprocess.py also hangs.
# Anything that uses Popen.communicate or directly uses
# Popen.stdXXX.read hangs. It's not clear why.
'test_subprocess.ProcessTestCase.test_communicate',
'test_subprocess.ProcessTestCase.test_cwd',
'test_subprocess.ProcessTestCase.test_env',
'test_subprocess.ProcessTestCase.test_stderr_pipe',
'test_subprocess.ProcessTestCase.test_stdout_pipe',
'test_subprocess.ProcessTestCase.test_stdout_stderr_pipe',
'test_subprocess.ProcessTestCase.test_stderr_redirect_with_no_stdout_redirect',
'test_subprocess.ProcessTestCase.test_stdout_filedes_of_stdout',
'test_subprocess.ProcessTestcase.test_stdout_none',
'test_subprocess.ProcessTestcase.test_universal_newlines',
'test_subprocess.ProcessTestcase.test_writes_before_communicate',
'test_subprocess.Win32ProcessTestCase._kill_process',
'test_subprocess.Win32ProcessTestCase._kill_dead_process',
'test_subprocess.Win32ProcessTestCase.test_shell_sequence',
'test_subprocess.Win32ProcessTestCase.test_shell_string',
'test_subprocess.CommandsWithSpaces.with_spaces',
] ]
if PYPY:
disabled_tests += [
# appears to timeout?
'test_threading.ThreadTests.test_finalize_with_trace',
'test_asyncore.DispatcherWithSendTests_UsePoll.test_send',
'test_asyncore.DispatcherWithSendTests.test_send',
# More unexpected timeouts
'test_ssl.ContextTests.test__https_verify_envvar',
'test_subprocess.ProcessTestCase.test_check_output',
'test_telnetlib.ReadTests.test_read_eager_A',
# But on Windows, our gc fix for that doesn't work anyway
# so we have to disable it.
'test_urllib2_localnet.TestUrlopen.test_https_with_cafile',
# These tests hang. see above.
'test_threading.ThreadJoinOnShutdown.test_1_join_on_shutdown',
'test_threading.ThreadingExceptionTests.test_print_exception',
# Our copy of these in test__subprocess.py also hangs.
# Anything that uses Popen.communicate or directly uses
# Popen.stdXXX.read hangs. It's not clear why.
'test_subprocess.ProcessTestCase.test_communicate',
'test_subprocess.ProcessTestCase.test_cwd',
'test_subprocess.ProcessTestCase.test_env',
'test_subprocess.ProcessTestCase.test_stderr_pipe',
'test_subprocess.ProcessTestCase.test_stdout_pipe',
'test_subprocess.ProcessTestCase.test_stdout_stderr_pipe',
'test_subprocess.ProcessTestCase.test_stderr_redirect_with_no_stdout_redirect',
'test_subprocess.ProcessTestCase.test_stdout_filedes_of_stdout',
'test_subprocess.ProcessTestcase.test_stdout_none',
'test_subprocess.ProcessTestcase.test_universal_newlines',
'test_subprocess.ProcessTestcase.test_writes_before_communicate',
'test_subprocess.Win32ProcessTestCase._kill_process',
'test_subprocess.Win32ProcessTestCase._kill_dead_process',
'test_subprocess.Win32ProcessTestCase.test_shell_sequence',
'test_subprocess.Win32ProcessTestCase.test_shell_string',
'test_subprocess.CommandsWithSpaces.with_spaces',
]
if WIN: if WIN:
disabled_tests += [ disabled_tests += [
...@@ -831,7 +847,9 @@ if PY34: ...@@ -831,7 +847,9 @@ if PY34:
# ld.so: dl-open.c: 231: dl_open_worker: Assertion # ld.so: dl-open.c: 231: dl_open_worker: Assertion
# `_dl_debug_initialize (0, args->nsid)->r_state == # `_dl_debug_initialize (0, args->nsid)->r_state ==
# RT_CONSISTENT' failed!" and fail. # RT_CONSISTENT' failed!" and fail.
'test_threading.ThreadTests.test_is_alive_after_fork', disabled_tests += [
'test_threading.ThreadTests.test_is_alive_after_fork',
]
if TRAVIS: if TRAVIS:
disabled_tests += [ disabled_tests += [
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment