kopia lustrzana https://github.com/simonw/datasette
47 wiersze
1008 B
Python
47 wiersze
1008 B
Python
|
from datasette.utils.check_callable import check_callable
|
||
|
import pytest
|
||
|
|
||
|
|
||
|
class AsyncClass:
|
||
|
async def __call__(self):
|
||
|
pass
|
||
|
|
||
|
|
||
|
class NotAsyncClass:
|
||
|
def __call__(self):
|
||
|
pass
|
||
|
|
||
|
|
||
|
class ClassNoCall:
|
||
|
pass
|
||
|
|
||
|
|
||
|
async def async_func():
|
||
|
pass
|
||
|
|
||
|
|
||
|
def non_async_func():
|
||
|
pass
|
||
|
|
||
|
|
||
|
@pytest.mark.parametrize(
|
||
|
"obj,expected_is_callable,expected_is_async_callable",
|
||
|
(
|
||
|
(async_func, True, True),
|
||
|
(non_async_func, True, False),
|
||
|
(AsyncClass(), True, True),
|
||
|
(NotAsyncClass(), True, False),
|
||
|
(ClassNoCall(), False, False),
|
||
|
(AsyncClass, True, False),
|
||
|
(NotAsyncClass, True, False),
|
||
|
(ClassNoCall, True, False),
|
||
|
("", False, False),
|
||
|
(1, False, False),
|
||
|
(str, True, False),
|
||
|
),
|
||
|
)
|
||
|
def test_check_callable(obj, expected_is_callable, expected_is_async_callable):
|
||
|
status = check_callable(obj)
|
||
|
assert status.is_callable == expected_is_callable
|
||
|
assert status.is_async_callable == expected_is_async_callable
|