|
5 | 5 | from functools import partial |
6 | 6 | from async_generator import aclosing |
7 | 7 | from ... import _core |
8 | | -from .tutil import gc_collect_harder, buggy_pypy_asyncgens |
| 8 | +from .tutil import gc_collect_harder, buggy_pypy_asyncgens, restore_unraisablehook |
9 | 9 |
|
10 | 10 |
|
11 | 11 | def test_asyncgen_basics(): |
@@ -94,8 +94,9 @@ async def agen(): |
94 | 94 | record.append("crashing") |
95 | 95 | raise ValueError("oops") |
96 | 96 |
|
97 | | - await agen().asend(None) |
98 | | - gc_collect_harder() |
| 97 | + with restore_unraisablehook(): |
| 98 | + await agen().asend(None) |
| 99 | + gc_collect_harder() |
99 | 100 | await _core.wait_all_tasks_blocked() |
100 | 101 | assert record == ["crashing"] |
101 | 102 | exc_type, exc_value, exc_traceback = caplog.records[0].exc_info |
@@ -170,6 +171,7 @@ async def async_main(): |
170 | 171 | assert record == ["innermost"] + list(range(100)) |
171 | 172 |
|
172 | 173 |
|
| 174 | +@restore_unraisablehook() |
173 | 175 | def test_last_minute_gc_edge_case(): |
174 | 176 | saved = [] |
175 | 177 | record = [] |
@@ -267,17 +269,18 @@ async def awaits_after_yield(): |
267 | 269 | yield 42 |
268 | 270 | await _core.cancel_shielded_checkpoint() |
269 | 271 |
|
270 | | - await step_outside_async_context(well_behaved()) |
271 | | - gc_collect_harder() |
272 | | - assert capsys.readouterr().err == "" |
| 272 | + with restore_unraisablehook(): |
| 273 | + await step_outside_async_context(well_behaved()) |
| 274 | + gc_collect_harder() |
| 275 | + assert capsys.readouterr().err == "" |
273 | 276 |
|
274 | | - await step_outside_async_context(yields_after_yield()) |
275 | | - gc_collect_harder() |
276 | | - assert "ignored GeneratorExit" in capsys.readouterr().err |
| 277 | + await step_outside_async_context(yields_after_yield()) |
| 278 | + gc_collect_harder() |
| 279 | + assert "ignored GeneratorExit" in capsys.readouterr().err |
277 | 280 |
|
278 | | - await step_outside_async_context(awaits_after_yield()) |
279 | | - gc_collect_harder() |
280 | | - assert "awaited something during finalization" in capsys.readouterr().err |
| 281 | + await step_outside_async_context(awaits_after_yield()) |
| 282 | + gc_collect_harder() |
| 283 | + assert "awaited something during finalization" in capsys.readouterr().err |
281 | 284 |
|
282 | 285 |
|
283 | 286 | @pytest.mark.skipif(buggy_pypy_asyncgens, reason="pypy 7.2.0 is buggy") |
@@ -307,10 +310,11 @@ async def async_main(): |
307 | 310 | await _core.wait_all_tasks_blocked() |
308 | 311 | assert record == ["trio collected ours"] |
309 | 312 |
|
310 | | - old_hooks = sys.get_asyncgen_hooks() |
311 | | - sys.set_asyncgen_hooks(my_firstiter, my_finalizer) |
312 | | - try: |
313 | | - _core.run(async_main) |
314 | | - finally: |
315 | | - assert sys.get_asyncgen_hooks() == (my_firstiter, my_finalizer) |
316 | | - sys.set_asyncgen_hooks(*old_hooks) |
| 313 | + with restore_unraisablehook(): |
| 314 | + old_hooks = sys.get_asyncgen_hooks() |
| 315 | + sys.set_asyncgen_hooks(my_firstiter, my_finalizer) |
| 316 | + try: |
| 317 | + _core.run(async_main) |
| 318 | + finally: |
| 319 | + assert sys.get_asyncgen_hooks() == (my_firstiter, my_finalizer) |
| 320 | + sys.set_asyncgen_hooks(*old_hooks) |
0 commit comments