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
			| 
								 
											3 years ago
										 
									 | 
							
								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()
							 |