moving to scripts
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
from functools import wraps, partial
|
||||
|
||||
from .. import _core
|
||||
from ..abc import Clock, Instrument
|
||||
|
||||
|
||||
# Use:
|
||||
#
|
||||
# @trio_test
|
||||
# async def test_whatever():
|
||||
# await ...
|
||||
#
|
||||
# Also: if a pytest fixture is passed in that subclasses the Clock abc, then
|
||||
# that clock is passed to trio.run().
|
||||
def trio_test(fn):
|
||||
@wraps(fn)
|
||||
def wrapper(**kwargs):
|
||||
__tracebackhide__ = True
|
||||
clocks = [c for c in kwargs.values() if isinstance(c, Clock)]
|
||||
if not clocks:
|
||||
clock = None
|
||||
elif len(clocks) == 1:
|
||||
clock = clocks[0]
|
||||
else:
|
||||
raise ValueError("too many clocks spoil the broth!")
|
||||
instruments = [i for i in kwargs.values() if isinstance(i, Instrument)]
|
||||
return _core.run(partial(fn, **kwargs), clock=clock, instruments=instruments)
|
||||
|
||||
return wrapper
|
||||
Reference in New Issue
Block a user