First attempt tests (#1)

This commit is contained in:
Néstor Pérez 2021-10-11 20:02:00 +02:00 committed by GitHub
parent 257b239cac
commit cab4d59fef
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -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."
)