Merge branch 'feat/optional-uvloop-use' of github.com:prryplatypus/sanic into feat/optional-uvloop-use
This commit is contained in:
		| @@ -450,3 +450,79 @@ def test_custom_context(): | ||||
|     app = Sanic("custom", ctx=ctx) | ||||
|  | ||||
|     assert app.ctx == ctx | ||||
|  | ||||
|  | ||||
| def test_app_uvloop_config(caplog): | ||||
|     if uvloop_installed(): | ||||
|         asyncio.set_event_loop_policy(None) | ||||
|         environ["SANIC_USE_UVLOOP"] = "false" | ||||
|  | ||||
|         app = Sanic("dont_use_uvloop") | ||||
|  | ||||
|         @app.get("/") | ||||
|         def _(request): | ||||
|             assert not isinstance( | ||||
|                 asyncio.get_event_loop_policy(), | ||||
|                 uvloop.EventLoopPolicy | ||||
|             ) | ||||
|             return text("ok") | ||||
|  | ||||
|         app.test_client.get("/") | ||||
|         del environ["SANIC_USE_UVLOOP"] | ||||
|  | ||||
|         app = Sanic("use_uvloop") | ||||
|  | ||||
|         @app.get("/") | ||||
|         async def _(request): | ||||
|             assert isinstance( | ||||
|                 asyncio.get_event_loop_policy(), | ||||
|                 uvloop.EventLoopPolicy | ||||
|             ) | ||||
|             return text("ok") | ||||
|  | ||||
|         app.test_client.get("/") | ||||
|  | ||||
|         asyncio.set_event_loop_policy(None) | ||||
|  | ||||
|         environ["SANIC_NO_UVLOOP"] = "true" | ||||
|         app = Sanic("use_uvloop_with_no_uvloop_set") | ||||
|  | ||||
|         with caplog.at_level(logging.WARNING): | ||||
|             @app.get("/") | ||||
|             async def _(request): | ||||
|                 assert isinstance( | ||||
|                     asyncio.get_event_loop_policy(), | ||||
|                     uvloop.EventLoopPolicy | ||||
|                 ) | ||||
|                 return text("ok") | ||||
|  | ||||
|             app.test_client.get("/") | ||||
|  | ||||
|         del environ["SANIC_NO_UVLOOP"] | ||||
|         asyncio.set_event_loop_policy(None) | ||||
|  | ||||
|         assert caplog.records[0].message == ( | ||||
|             "You are running the app using uvloop, but the " | ||||
|             "'SANIC_NO_UVLOOP' environment variable (used to opt-out " | ||||
|             "of installing uvloop with Sanic) is set to true. If you " | ||||
|             "want to disable uvloop with Sanic, set the 'USE_UVLOOP' " | ||||
|             "configuration value to false." | ||||
|         ) | ||||
|  | ||||
|     elif not OS_IS_WINDOWS: | ||||
|         app = Sanic("wants_but_cant_use_uvloop") | ||||
|  | ||||
|         with caplog.at_level(logging.WARNING): | ||||
|             @app.get("/") | ||||
|             async def _(request): | ||||
|                 return text("ok") | ||||
|             app.test_client.get("/") | ||||
|  | ||||
|         assert caplog.records[0].message == ( | ||||
|             "You are trying to use uvloop, but uvloop is not " | ||||
|             "installed in your system. In order to use uvloop " | ||||
|             "you must first install it. Otherwise, you can disable " | ||||
|             "uvloop completely by setting the 'USE_UVLOOP' " | ||||
|             "configuration  value to false. The app will now continue " | ||||
|             "to run without using uvloop." | ||||
|         ) | ||||
		Reference in New Issue
	
	Block a user
	 prryplatypus
					prryplatypus