85 lines
2.0 KiB
Python
85 lines
2.0 KiB
Python
import os
|
|
import sys
|
|
|
|
import pytest
|
|
|
|
from .. import (
|
|
current_async_library, AsyncLibraryNotFoundError,
|
|
current_async_library_cvar, thread_local
|
|
)
|
|
|
|
|
|
def test_basics_cvar():
|
|
with pytest.raises(AsyncLibraryNotFoundError):
|
|
current_async_library()
|
|
|
|
token = current_async_library_cvar.set("generic-lib")
|
|
try:
|
|
assert current_async_library() == "generic-lib"
|
|
finally:
|
|
current_async_library_cvar.reset(token)
|
|
|
|
with pytest.raises(AsyncLibraryNotFoundError):
|
|
current_async_library()
|
|
|
|
|
|
def test_basics_tlocal():
|
|
with pytest.raises(AsyncLibraryNotFoundError):
|
|
current_async_library()
|
|
|
|
old_name, thread_local.name = thread_local.name, "generic-lib"
|
|
try:
|
|
assert current_async_library() == "generic-lib"
|
|
finally:
|
|
thread_local.name = old_name
|
|
|
|
with pytest.raises(AsyncLibraryNotFoundError):
|
|
current_async_library()
|
|
|
|
|
|
def test_asyncio():
|
|
import asyncio
|
|
|
|
with pytest.raises(AsyncLibraryNotFoundError):
|
|
current_async_library()
|
|
|
|
ran = []
|
|
|
|
async def this_is_asyncio():
|
|
assert current_async_library() == "asyncio"
|
|
# Call it a second time to exercise the caching logic
|
|
assert current_async_library() == "asyncio"
|
|
ran.append(True)
|
|
|
|
asyncio.run(this_is_asyncio())
|
|
assert ran == [True]
|
|
|
|
with pytest.raises(AsyncLibraryNotFoundError):
|
|
current_async_library()
|
|
|
|
|
|
@pytest.mark.skipif(
|
|
sys.version_info >= (3, 12),
|
|
reason=
|
|
"curio broken on 3.12 (https://github.com/python-trio/sniffio/pull/42)",
|
|
)
|
|
def test_curio():
|
|
import curio
|
|
|
|
with pytest.raises(AsyncLibraryNotFoundError):
|
|
current_async_library()
|
|
|
|
ran = []
|
|
|
|
async def this_is_curio():
|
|
assert current_async_library() == "curio"
|
|
# Call it a second time to exercise the caching logic
|
|
assert current_async_library() == "curio"
|
|
ran.append(True)
|
|
|
|
curio.run(this_is_curio)
|
|
assert ran == [True]
|
|
|
|
with pytest.raises(AsyncLibraryNotFoundError):
|
|
current_async_library()
|