mirror of https://github.com/encode/starlette.git
80 lines
1.8 KiB
Python
80 lines
1.8 KiB
Python
|
import functools
|
||
|
|
||
|
from starlette._utils import is_async_callable
|
||
|
|
||
|
|
||
|
def test_async_func():
|
||
|
async def async_func():
|
||
|
... # pragma: no cover
|
||
|
|
||
|
def func():
|
||
|
... # pragma: no cover
|
||
|
|
||
|
assert is_async_callable(async_func)
|
||
|
assert not is_async_callable(func)
|
||
|
|
||
|
|
||
|
def test_async_partial():
|
||
|
async def async_func(a, b):
|
||
|
... # pragma: no cover
|
||
|
|
||
|
def func(a, b):
|
||
|
... # pragma: no cover
|
||
|
|
||
|
partial = functools.partial(async_func, 1)
|
||
|
assert is_async_callable(partial)
|
||
|
|
||
|
partial = functools.partial(func, 1)
|
||
|
assert not is_async_callable(partial)
|
||
|
|
||
|
|
||
|
def test_async_method():
|
||
|
class Async:
|
||
|
async def method(self):
|
||
|
... # pragma: no cover
|
||
|
|
||
|
class Sync:
|
||
|
def method(self):
|
||
|
... # pragma: no cover
|
||
|
|
||
|
assert is_async_callable(Async().method)
|
||
|
assert not is_async_callable(Sync().method)
|
||
|
|
||
|
|
||
|
def test_async_object_call():
|
||
|
class Async:
|
||
|
async def __call__(self):
|
||
|
... # pragma: no cover
|
||
|
|
||
|
class Sync:
|
||
|
def __call__(self):
|
||
|
... # pragma: no cover
|
||
|
|
||
|
assert is_async_callable(Async())
|
||
|
assert not is_async_callable(Sync())
|
||
|
|
||
|
|
||
|
def test_async_partial_object_call():
|
||
|
class Async:
|
||
|
async def __call__(self, a, b):
|
||
|
... # pragma: no cover
|
||
|
|
||
|
class Sync:
|
||
|
def __call__(self, a, b):
|
||
|
... # pragma: no cover
|
||
|
|
||
|
partial = functools.partial(Async(), 1)
|
||
|
assert is_async_callable(partial)
|
||
|
|
||
|
partial = functools.partial(Sync(), 1)
|
||
|
assert not is_async_callable(partial)
|
||
|
|
||
|
|
||
|
def test_async_nested_partial():
|
||
|
async def async_func(a, b):
|
||
|
... # pragma: no cover
|
||
|
|
||
|
partial = functools.partial(async_func, b=2)
|
||
|
nested_partial = functools.partial(partial, a=1)
|
||
|
assert is_async_callable(nested_partial)
|