You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							68 lines
						
					
					
						
							1.6 KiB
						
					
					
				
			
		
		
	
	
							68 lines
						
					
					
						
							1.6 KiB
						
					
					
				import sys
 | 
						|
 | 
						|
import pytest
 | 
						|
 | 
						|
from .. import (
 | 
						|
    current_async_library, AsyncLibraryNotFoundError,
 | 
						|
    current_async_library_cvar
 | 
						|
)
 | 
						|
 | 
						|
 | 
						|
def test_basics():
 | 
						|
    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_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)
 | 
						|
 | 
						|
    loop = asyncio.get_event_loop()
 | 
						|
    loop.run_until_complete(this_is_asyncio())
 | 
						|
    assert ran == [True]
 | 
						|
    loop.close()
 | 
						|
 | 
						|
    with pytest.raises(AsyncLibraryNotFoundError):
 | 
						|
        current_async_library()
 | 
						|
 | 
						|
 | 
						|
@pytest.mark.skipif(sys.version_info < (3, 6), reason='Curio requires 3.6+')
 | 
						|
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()
 |