Warn on duplicate route names (#2525)
This commit is contained in:
parent
2f6f2bfa76
commit
8e9342e188
12
sanic/app.py
12
sanic/app.py
|
@ -1521,6 +1521,18 @@ class Sanic(BaseSanic, RunnerMixin, metaclass=TouchUpMeta):
|
||||||
self.signalize(self.config.TOUCHUP)
|
self.signalize(self.config.TOUCHUP)
|
||||||
self.finalize()
|
self.finalize()
|
||||||
|
|
||||||
|
route_names = [route.name for route in self.router.routes]
|
||||||
|
duplicates = {
|
||||||
|
name for name in route_names if route_names.count(name) > 1
|
||||||
|
}
|
||||||
|
if duplicates:
|
||||||
|
names = ", ".join(duplicates)
|
||||||
|
deprecation(
|
||||||
|
f"Duplicate route names detected: {names}. In the future, "
|
||||||
|
"Sanic will enforce uniqueness in route naming.",
|
||||||
|
23.3,
|
||||||
|
)
|
||||||
|
|
||||||
# TODO: Replace in v22.6 to check against apps in app registry
|
# TODO: Replace in v22.6 to check against apps in app registry
|
||||||
if (
|
if (
|
||||||
self.__class__._uvloop_setting is not None
|
self.__class__._uvloop_setting is not None
|
||||||
|
|
|
@ -1266,3 +1266,22 @@ async def test_added_callable_route_ctx_kwargs(app):
|
||||||
|
|
||||||
assert request.route.ctx.foo() == "foo"
|
assert request.route.ctx.foo() == "foo"
|
||||||
assert await request.route.ctx.bar() == 99
|
assert await request.route.ctx.bar() == 99
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.asyncio
|
||||||
|
async def test_duplicate_route_deprecation(app):
|
||||||
|
@app.route("/foo", name="duped")
|
||||||
|
async def handler_foo(request):
|
||||||
|
return text("...")
|
||||||
|
|
||||||
|
@app.route("/bar", name="duped")
|
||||||
|
async def handler_bar(request):
|
||||||
|
return text("...")
|
||||||
|
|
||||||
|
message = (
|
||||||
|
r"\[DEPRECATION v23\.3\] Duplicate route names detected: "
|
||||||
|
r"test_duplicate_route_deprecation\.duped\. In the future, "
|
||||||
|
r"Sanic will enforce uniqueness in route naming\."
|
||||||
|
)
|
||||||
|
with pytest.warns(DeprecationWarning, match=message):
|
||||||
|
await app._startup()
|
||||||
|
|
Loading…
Reference in New Issue
Block a user