Skip to content

Commit c0c9a15

Browse files
committed
Trying again for asyncio on windows on py38
1 parent 277a4e9 commit c0c9a15

File tree

3 files changed

+42
-12
lines changed

3 files changed

+42
-12
lines changed

pytest_twisted.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import functools
22
import inspect
3+
import sys
34
import warnings
45

56
import decorator
@@ -326,3 +327,17 @@ def pytest_configure(config):
326327
)(blockon)
327328

328329
reactor_installers[config.getoption("reactor")]()
330+
331+
332+
def use_asyncio_selector_if_required(config):
333+
# https://twistedmatrix.com/trac/ticket/9766
334+
335+
if (
336+
config.getoption("reactor", "default") == "asyncio"
337+
and sys.platform == 'win32'
338+
and sys.version_info >= (3, 8)
339+
):
340+
import asyncio
341+
342+
selector_policy = asyncio.WindowsSelectorEventLoopPolicy()
343+
asyncio.set_event_loop_policy(selector_policy)

testing/conftest.py

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,10 @@
1-
import sys
2-
31
import pytest
2+
import pytest_twisted
43

54

65
pytest_plugins = "_pytest.pytester"
76

87

98
@pytest.hookimpl(tryfirst=True)
109
def pytest_configure(config):
11-
if (
12-
config.getoption("reactor") == 'asyncio'
13-
and sys.platform == 'win32'
14-
and sys.version_info >= (3, 8)
15-
):
16-
# https://twistedmatrix.com/trac/ticket/9766
17-
import asyncio
18-
19-
selector_policy = asyncio.WindowsSelectorEventLoopPolicy()
20-
asyncio.set_event_loop_policy(selector_policy)
10+
pytest_twisted.use_asyncio_selector_if_required(config=config)

testing/test_basic.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,19 @@ def format_run_result_output_for_assert(run_result):
4949
)
5050

5151

52+
@pytest.fixture(name="default_conftest", autouse=True)
53+
def _default_conftest(testdir):
54+
testdir.makeconftest(textwrap.dedent("""
55+
import pytest
56+
import pytest_twisted
57+
58+
59+
@pytest.hookimpl(tryfirst=True)
60+
def pytest_configure(config):
61+
pytest_twisted.use_asyncio_selector_if_required(config=config)
62+
"""))
63+
64+
5265
def skip_if_reactor_not(request, expected_reactor):
5366
actual_reactor = request.config.getoption("reactor", "default")
5467
if actual_reactor != expected_reactor:
@@ -627,10 +640,14 @@ def main():
627640
def test_blockon_in_hook_with_asyncio(testdir, cmd_opts, request):
628641
skip_if_reactor_not(request, "asyncio")
629642
conftest_file = """
643+
import pytest
630644
import pytest_twisted as pt
631645
from twisted.internet import defer
632646
647+
@pytest.hookimpl(tryfirst=True)
633648
def pytest_configure(config):
649+
pt.use_asyncio_selector_if_required(config=config)
650+
634651
pt.init_asyncio_reactor()
635652
d = defer.Deferred()
636653
@@ -656,6 +673,14 @@ def test_succeed():
656673
def test_wrong_reactor_with_asyncio(testdir, cmd_opts, request):
657674
skip_if_reactor_not(request, "asyncio")
658675
conftest_file = """
676+
import pytest
677+
import pytest_twisted
678+
679+
680+
@pytest.hookimpl(tryfirst=True)
681+
def pytest_configure(config):
682+
pytest_twisted.use_asyncio_selector_if_required(config=config)
683+
659684
def pytest_addhooks():
660685
import twisted.internet.default
661686
twisted.internet.default.install()

0 commit comments

Comments
 (0)