File tree Expand file tree Collapse file tree 2 files changed +15
-2
lines changed Expand file tree Collapse file tree 2 files changed +15
-2
lines changed Original file line number Diff line number Diff line change 12
12
from trio .abc import Clock , Instrument
13
13
from trio .testing import MockClock
14
14
from _pytest .outcomes import Skipped , XFailed
15
+
15
16
# pytest_timeout_set_timer needs to be imported here for pluggy
16
- from .timeout import set_timeout , pytest_timeout_set_timer as pytest_timeout_set_timer
17
+ from .timeout import (
18
+ set_timeout ,
19
+ TimeoutTriggeredException ,
20
+ pytest_timeout_set_timer as pytest_timeout_set_timer ,
21
+ )
17
22
18
23
if sys .version_info [:2 ] < (3 , 11 ):
19
24
from exceptiongroup import BaseExceptionGroup
@@ -362,6 +367,8 @@ def wrapper(**kwargs):
362
367
ex = queue .pop ()
363
368
if isinstance (ex , BaseExceptionGroup ):
364
369
queue .extend (ex .exceptions )
370
+ elif isinstance (ex , TimeoutTriggeredException ):
371
+ pytest .fail (str (ex ), pytrace = False )
365
372
else :
366
373
leaves .append (ex )
367
374
if len (leaves ) == 1 :
@@ -372,6 +379,8 @@ def wrapper(**kwargs):
372
379
# Since our leaf exceptions don't consist of exactly one 'magic'
373
380
# skipped or xfailed exception, re-raise the whole group.
374
381
raise
382
+ except TimeoutTriggeredException as ex :
383
+ pytest .fail (str (ex ), pytrace = False )
375
384
376
385
return wrapper
377
386
Original file line number Diff line number Diff line change @@ -50,6 +50,10 @@ def pytest_timeout_set_timer(
50
50
# No need for pytest_timeout_cancel_timer as we detect that the test loop has exited
51
51
52
52
53
+ class TimeoutTriggeredException (Exception ):
54
+ pass
55
+
56
+
53
57
def trio_timeout_thread ():
54
58
async def run_timeouts ():
55
59
async with trio .open_nursery () as nursery :
@@ -89,7 +93,7 @@ async def execute_timeout() -> None:
89
93
stack = "\n " .join (format_recursive_nursery_stack (nursery ) + ["Timeout reached" ])
90
94
91
95
async def report ():
92
- pytest . fail (stack , pytrace = False )
96
+ raise TimeoutTriggeredException (stack )
93
97
94
98
nursery .start_soon (report )
95
99
You can’t perform that action at this time.
0 commit comments