Skip to content

Commit 448a203

Browse files
committed
Improve compatibility with pytest-asyncio 0.23
1 parent 393e7b5 commit 448a203

File tree

2 files changed

+37
-18
lines changed

2 files changed

+37
-18
lines changed

src/async_solipsism/loop.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
from .exceptions import SolipsismError
2525

2626

27-
__all__ = ('EventLoop', 'stream_pairs')
27+
__all__ = ('EventLoop', 'EventLoopPolicy', 'stream_pairs')
2828

2929

3030
class EventLoop(asyncio.selector_events.BaseSelectorEventLoop):
@@ -197,6 +197,11 @@ def _stop_serving(self, sock):
197197
super()._stop_serving(sock)
198198

199199

200+
class EventLoopPolicy(asyncio.DefaultEventLoopPolicy):
201+
def new_event_loop(self) -> EventLoop:
202+
return EventLoop()
203+
204+
200205
async def stream_pairs(capacity=None):
201206
sock1, sock2 = _socket.socketpair(capacity=capacity)
202207
streams1 = await asyncio.open_connection(sock=sock1)

test/test_loop.py

Lines changed: 31 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,12 @@
2525

2626

2727
@pytest.fixture
28-
def event_loop():
29-
loop = async_solipsism.EventLoop()
30-
yield loop
31-
loop.close()
28+
def event_loop_policy():
29+
return async_solipsism.EventLoopPolicy()
3230

3331

34-
async def test_sleep(event_loop):
32+
async def test_sleep():
33+
event_loop = asyncio.get_running_loop()
3534
assert event_loop.time() == 0.0
3635
await asyncio.sleep(2)
3736
assert event_loop.time() == 2.0
@@ -53,7 +52,9 @@ async def zzz():
5352
]
5453
)
5554
@pytest.mark.parametrize('delay', [False, True])
56-
async def test_delayed_sock_recv(method, delay, event_loop):
55+
async def test_delayed_sock_recv(method, delay):
56+
event_loop = asyncio.get_running_loop()
57+
5758
async def delayed_write(wsock):
5859
await asyncio.sleep(1)
5960
wsock.send(b'Hello')
@@ -76,7 +77,9 @@ async def delayed_write(wsock):
7677

7778

7879
@pytest.mark.parametrize('size', [10, 10**7])
79-
async def test_sock_sendall(size, event_loop):
80+
async def test_sock_sendall(size):
81+
event_loop = asyncio.get_running_loop()
82+
8083
async def delayed_read(rsock):
8184
n = 0
8285
while True:
@@ -99,7 +102,8 @@ async def delayed_read(rsock):
99102
assert n == size
100103

101104

102-
async def test_connect_existing(event_loop, mocker):
105+
async def test_connect_existing(mocker):
106+
event_loop = asyncio.get_running_loop()
103107
sock1, sock2 = async_solipsism.socketpair()
104108
transport1, protocol1 = await event_loop.connect_accepted_socket(
105109
mocker.MagicMock, sock1)
@@ -128,7 +132,9 @@ async def test_stream():
128132

129133

130134
@pytest.mark.parametrize('manual_socket', [False, True])
131-
async def test_server(event_loop, manual_socket):
135+
async def test_server(manual_socket):
136+
event_loop = asyncio.get_running_loop()
137+
132138
def callback(reader, writer):
133139
server_conn.set_result((reader, writer))
134140

@@ -156,7 +162,7 @@ def callback(reader, writer):
156162
await server.wait_closed()
157163

158164

159-
async def test_unused_port(event_loop):
165+
async def test_unused_port():
160166
def callback(reader, writer):
161167
pass
162168

@@ -172,26 +178,30 @@ def callback(reader, writer):
172178
await server2.wait_closed()
173179

174180

175-
async def test_close_server(event_loop):
181+
async def test_close_server():
182+
event_loop = asyncio.get_running_loop()
176183
server = await asyncio.start_server(lambda reader, writer: None, 'test.invalid', 1234)
177184
server.close()
178185
await server.wait_closed()
179186
with pytest.raises(ConnectionRefusedError):
180187
await event_loop.create_connection('test.invalid', 1234)
181188

182189

183-
async def test_create_connection_no_listener(event_loop):
190+
async def test_create_connection_no_listener():
191+
event_loop = asyncio.get_running_loop()
184192
with pytest.raises(ConnectionRefusedError):
185193
await event_loop.create_connection('test.invalid', 1234)
186194

187195

188-
async def test_run_in_executor_implicit(event_loop):
196+
async def test_run_in_executor_implicit():
197+
event_loop = asyncio.get_running_loop()
189198
thread_id = await event_loop.run_in_executor(None, threading.get_ident)
190199
assert isinstance(thread_id, int)
191200
assert thread_id != threading.get_ident()
192201

193202

194-
async def test_run_in_executor_explicit(event_loop):
203+
async def test_run_in_executor_explicit():
204+
event_loop = asyncio.get_running_loop()
195205
my_executor = concurrent.futures.ThreadPoolExecutor(1)
196206
expected_thread_id = my_executor.submit(threading.get_ident).result()
197207
assert isinstance(expected_thread_id, int)
@@ -201,7 +211,8 @@ async def test_run_in_executor_explicit(event_loop):
201211

202212

203213
@pytest.mark.skipif("sys.version_info < (3, 7)")
204-
async def test_sendfile(event_loop, tmp_path):
214+
async def test_sendfile(tmp_path):
215+
event_loop = asyncio.get_running_loop()
205216
tmp_file = tmp_path / 'test_sendfile.txt'
206217
tmp_file.write_bytes(b'Hello world\n')
207218
((reader1, writer1), (reader2, writer2)) = await async_solipsism.stream_pairs()
@@ -215,14 +226,17 @@ async def test_sendfile(event_loop, tmp_path):
215226
await writer2.wait_closed()
216227

217228

218-
async def test_call_soon_threadsafe(event_loop):
229+
async def test_call_soon_threadsafe():
230+
event_loop = asyncio.get_running_loop()
219231
future = event_loop.create_future()
220232
event_loop.call_soon_threadsafe(future.set_result, 3)
221233
result = await future
222234
assert result == 3
223235

224236

225-
async def test_call_soon_threadsafe_wrong_thread(event_loop):
237+
async def test_call_soon_threadsafe_wrong_thread():
238+
event_loop = asyncio.get_running_loop()
239+
226240
def thread_func():
227241
event_loop.call_soon_threadsafe(lambda: None)
228242

0 commit comments

Comments
 (0)