68 lines
1.7 KiB
Python
68 lines
1.7 KiB
Python
import pytest
|
|
|
|
# here's a little voodoo -- any generic tests depend on this 'framework'
|
|
# fixture, which (sneakily using internal-only APIs) ensures that each
|
|
# tests runs twice: once enabled for Twisted and once enabled for
|
|
# asyncio.
|
|
#
|
|
# ...but there's a catch: not all environments support both, so we
|
|
# catch ImportError and skip those tests.
|
|
#
|
|
# To write a test that only works on one or the other framework, use
|
|
# the framework_tx or framework_aio fixtures instead
|
|
|
|
|
|
@pytest.fixture(
|
|
params=['twisted', 'asyncio'],
|
|
)
|
|
def framework(request):
|
|
"""
|
|
This is a framework that uses txaio internals to set up a
|
|
framework to use, as the 'official' way is to call .use_twisted()
|
|
or .use_asyncio() -- but we want to test with both frameworks if
|
|
they're available.
|
|
"""
|
|
|
|
try:
|
|
if request.param == 'twisted':
|
|
return framework_tx()
|
|
elif request.param == 'asyncio':
|
|
return framework_aio()
|
|
except ImportError:
|
|
pytest.skip()
|
|
|
|
|
|
@pytest.fixture
|
|
def framework_uninitialized():
|
|
import txaio
|
|
from txaio import _unframework
|
|
txaio._use_framework(_unframework)
|
|
txaio._explicit_framework = None
|
|
return _unframework
|
|
|
|
|
|
@pytest.fixture
|
|
def framework_tx():
|
|
try:
|
|
import txaio
|
|
from txaio import tx
|
|
tx._loggers = set()
|
|
txaio._use_framework(tx)
|
|
txaio._explicit_framework = 'twisted'
|
|
return tx
|
|
except ImportError:
|
|
pytest.skip()
|
|
|
|
|
|
@pytest.fixture
|
|
def framework_aio():
|
|
try:
|
|
import txaio
|
|
from txaio import aio
|
|
aio._loggers = set()
|
|
txaio._use_framework(aio)
|
|
txaio._explicit_framework = 'asyncio'
|
|
return aio
|
|
except ImportError:
|
|
pytest.skip()
|