Compare commits
15 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
35c76253bf | ||
![]() |
8d86c3c598 | ||
![]() |
97635111af | ||
![]() |
7f3fe40cd4 | ||
![]() |
ea34bcd849 | ||
![]() |
05f758583b | ||
![]() |
760c74a293 | ||
![]() |
9def46beb8 | ||
![]() |
04be8e95a5 | ||
![]() |
78ced20fc7 | ||
![]() |
c3003413d3 | ||
![]() |
fe3fdc5d83 | ||
![]() |
b66fb6f9e8 | ||
![]() |
bf6175fb20 | ||
![]() |
58ca887be4 |
12
.github/FUNDING.yml
vendored
Normal file
12
.github/FUNDING.yml
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
# These are supported funding model platforms
|
||||
|
||||
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
|
||||
patreon: # Replace with a single Patreon username
|
||||
open_collective: sanic-org # Replace with a single Open Collective username
|
||||
ko_fi: # Replace with a single Ko-fi username
|
||||
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
|
||||
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
|
||||
liberapay: # Replace with a single Liberapay username
|
||||
issuehunt: # Replace with a single IssueHunt username
|
||||
otechie: # Replace with a single Otechie username
|
||||
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
|
201
CHANGELOG.rst
201
CHANGELOG.rst
@ -1,9 +1,96 @@
|
||||
Version 20.12.0
|
||||
===============
|
||||
|
||||
Features
|
||||
********
|
||||
|
||||
*
|
||||
`#1945 <https://github.com/huge-success/sanic/pull/1945>`_
|
||||
Static route more verbose if file not found
|
||||
|
||||
*
|
||||
`#1954 <https://github.com/huge-success/sanic/pull/1954>`_
|
||||
Fix static routes registration on a blueprint
|
||||
|
||||
*
|
||||
`#1961 <https://github.com/huge-success/sanic/pull/1961>`_
|
||||
Add Python 3.9 support
|
||||
|
||||
*
|
||||
`#1962 <https://github.com/huge-success/sanic/pull/1962>`_
|
||||
Sanic CLI upgrade
|
||||
|
||||
*
|
||||
`#1967 <https://github.com/huge-success/sanic/pull/1967>`_
|
||||
Update aiofile version requirements
|
||||
|
||||
*
|
||||
`#1969 <https://github.com/huge-success/sanic/pull/1969>`_
|
||||
Update multidict version requirements
|
||||
|
||||
*
|
||||
`#1970 <https://github.com/huge-success/sanic/pull/1970>`_
|
||||
Add py.typed file
|
||||
|
||||
*
|
||||
`#1972 <https://github.com/huge-success/sanic/pull/1972>`_
|
||||
Speed optimization in request handler
|
||||
|
||||
*
|
||||
`#1979 <https://github.com/huge-success/sanic/pull/1979>`_
|
||||
Add app registry and Sanic class level app retrieval
|
||||
|
||||
Bugfixes
|
||||
********
|
||||
|
||||
*
|
||||
`#1965 <https://github.com/huge-success/sanic/pull/1965>`_
|
||||
Fix Chunked Transport-Encoding in ASGI streaming response
|
||||
|
||||
Deprecations and Removals
|
||||
*************************
|
||||
|
||||
*
|
||||
`#1981 <https://github.com/huge-success/sanic/pull/1981>`_
|
||||
Cleanup and remove deprecated code
|
||||
|
||||
Developer infrastructure
|
||||
************************
|
||||
|
||||
*
|
||||
`#1956 <https://github.com/huge-success/sanic/pull/1956>`_
|
||||
Fix load module test
|
||||
|
||||
*
|
||||
`#1973 <https://github.com/huge-success/sanic/pull/1973>`_
|
||||
Transition Travis from .org to .com
|
||||
|
||||
*
|
||||
`#1986 <https://github.com/huge-success/sanic/pull/1986>`_
|
||||
Update tox requirements
|
||||
|
||||
Improved Documentation
|
||||
**********************
|
||||
|
||||
*
|
||||
`#1951 <https://github.com/huge-success/sanic/pull/1951>`_
|
||||
Documentation improvements
|
||||
|
||||
*
|
||||
`#1983 <https://github.com/huge-success/sanic/pull/1983>`_
|
||||
Remove duplicate contents in testing.rst
|
||||
|
||||
*
|
||||
`#1984 <https://github.com/huge-success/sanic/pull/1984>`_
|
||||
Fix typo in routing.rst
|
||||
|
||||
|
||||
Version 20.9.1
|
||||
===============
|
||||
|
||||
Bugfixes
|
||||
********
|
||||
|
||||
|
||||
*
|
||||
`#1954 <https://github.com/huge-success/sanic/pull/1954>`_
|
||||
Fix static route registration on blueprints
|
||||
@ -17,7 +104,7 @@ Version 19.12.3
|
||||
|
||||
Bugfixes
|
||||
********
|
||||
|
||||
|
||||
*
|
||||
`#1959 <https://github.com/huge-success/sanic/pull/1959>`_
|
||||
Removes duplicate headers in ASGI streaming body
|
||||
@ -37,27 +124,27 @@ Features
|
||||
*
|
||||
`#1894 <https://github.com/huge-success/sanic/pull/1894>`_
|
||||
Automatically set ``test_mode`` flag on app instance
|
||||
|
||||
|
||||
*
|
||||
`#1903 <https://github.com/huge-success/sanic/pull/1903>`_
|
||||
`#1903 <https://github.com/huge-success/sanic/pull/1903>`_
|
||||
Add new unified method for updating app values
|
||||
|
||||
|
||||
*
|
||||
`#1906 <https://github.com/huge-success/sanic/pull/1906>`_,
|
||||
`#1909 <https://github.com/huge-success/sanic/pull/1909>`_
|
||||
Adds WEBSOCKET_PING_TIMEOUT and WEBSOCKET_PING_INTERVAL configuration values
|
||||
|
||||
|
||||
*
|
||||
`#1935 <https://github.com/huge-success/sanic/pull/1935>`_
|
||||
httpx version dependency updated, it is slated for removal as a dependency in v20.12
|
||||
|
||||
*
|
||||
`#1937 <https://github.com/huge-success/sanic/pull/1937>`_
|
||||
`#1937 <https://github.com/huge-success/sanic/pull/1937>`_
|
||||
Added auto, text, and json fallback error handlers (in v21.3, the default will change form html to auto)
|
||||
|
||||
Bugfixes
|
||||
********
|
||||
|
||||
|
||||
*
|
||||
`#1897 <https://github.com/huge-success/sanic/pull/1897>`_
|
||||
Resolves exception from unread bytes in stream
|
||||
@ -98,7 +185,7 @@ Version 20.6.3
|
||||
|
||||
Bugfixes
|
||||
********
|
||||
|
||||
|
||||
*
|
||||
`#1884 <https://github.com/huge-success/sanic/pull/1884>`_
|
||||
Revert change to multiprocessing mode
|
||||
@ -109,7 +196,7 @@ Version 20.6.2
|
||||
|
||||
Features
|
||||
********
|
||||
|
||||
|
||||
*
|
||||
`#1641 <https://github.com/huge-success/sanic/pull/1641>`_
|
||||
Socket binding implemented properly for IPv6 and UNIX sockets
|
||||
@ -120,7 +207,7 @@ Version 20.6.1
|
||||
|
||||
Features
|
||||
********
|
||||
|
||||
|
||||
*
|
||||
`#1760 <https://github.com/huge-success/sanic/pull/1760>`_
|
||||
Add version parameter to websocket routes
|
||||
@ -131,7 +218,7 @@ Features
|
||||
|
||||
*
|
||||
`#1880 <https://github.com/huge-success/sanic/pull/1880>`_
|
||||
Add handler names for websockets for url_for usage
|
||||
Add handler names for websockets for url_for usage
|
||||
|
||||
Bugfixes
|
||||
********
|
||||
@ -151,7 +238,7 @@ Bugfixes
|
||||
*
|
||||
`#1848 <https://github.com/huge-success/sanic/pull/1848>`_
|
||||
Reverse named_response_middlware execution order, to match normal response middleware execution order
|
||||
|
||||
|
||||
*
|
||||
`#1853 <https://github.com/huge-success/sanic/pull/1853>`_
|
||||
Fix pickle error when attempting to pickle an application which contains websocket routes
|
||||
@ -203,28 +290,28 @@ Version 20.3.0
|
||||
Features
|
||||
********
|
||||
|
||||
*
|
||||
*
|
||||
`#1762 <https://github.com/huge-success/sanic/pull/1762>`_
|
||||
Add ``srv.start_serving()`` and ``srv.serve_forever()`` to ``AsyncioServer``
|
||||
|
||||
*
|
||||
*
|
||||
`#1767 <https://github.com/huge-success/sanic/pull/1767>`_
|
||||
Make Sanic usable on ``hypercorn -k trio myweb.app``
|
||||
|
||||
*
|
||||
*
|
||||
`#1768 <https://github.com/huge-success/sanic/pull/1768>`_
|
||||
No tracebacks on normal errors and prettier error pages
|
||||
|
||||
*
|
||||
*
|
||||
`#1769 <https://github.com/huge-success/sanic/pull/1769>`_
|
||||
Code cleanup in file responses
|
||||
|
||||
*
|
||||
*
|
||||
`#1793 <https://github.com/huge-success/sanic/pull/1793>`_ and
|
||||
`#1819 <https://github.com/huge-success/sanic/pull/1819>`_
|
||||
`#1819 <https://github.com/huge-success/sanic/pull/1819>`_
|
||||
Upgrade ``str.format()`` to f-strings
|
||||
|
||||
*
|
||||
*
|
||||
`#1798 <https://github.com/huge-success/sanic/pull/1798>`_
|
||||
Allow multiple workers on MacOS with Python 3.8
|
||||
|
||||
@ -235,19 +322,19 @@ Features
|
||||
Bugfixes
|
||||
********
|
||||
|
||||
*
|
||||
*
|
||||
`#1748 <https://github.com/huge-success/sanic/pull/1748>`_
|
||||
Remove loop argument in ``asyncio.Event`` in Python 3.8
|
||||
|
||||
*
|
||||
*
|
||||
`#1764 <https://github.com/huge-success/sanic/pull/1764>`_
|
||||
Allow route decorators to stack up again
|
||||
|
||||
*
|
||||
*
|
||||
`#1789 <https://github.com/huge-success/sanic/pull/1789>`_
|
||||
Fix tests using hosts yielding incorrect ``url_for``
|
||||
|
||||
*
|
||||
*
|
||||
`#1808 <https://github.com/huge-success/sanic/pull/1808>`_
|
||||
Fix Ctrl+C and tests on Windows
|
||||
|
||||
@ -261,7 +348,7 @@ Deprecations and Removals
|
||||
*
|
||||
`#1801 <https://github.com/huge-success/sanic/pull/1801>`_
|
||||
Complete deprecation from `#1666 <https://github.com/huge-success/sanic/pull/1666>`_ of dictionary context on ``request`` objects.
|
||||
|
||||
|
||||
*
|
||||
`#1807 <https://github.com/huge-success/sanic/pull/1807>`_
|
||||
Remove server config args that can be read directly from app
|
||||
@ -284,22 +371,22 @@ Dependencies
|
||||
Developer infrastructure
|
||||
************************
|
||||
|
||||
*
|
||||
*
|
||||
`#1833 <https://github.com/huge-success/sanic/pull/1833>`_
|
||||
Resolve broken documentation builds
|
||||
|
||||
Improved Documentation
|
||||
**********************
|
||||
|
||||
*
|
||||
*
|
||||
`#1755 <https://github.com/huge-success/sanic/pull/1755>`_
|
||||
Usage of ``response.empty()``
|
||||
|
||||
*
|
||||
*
|
||||
`#1778 <https://github.com/huge-success/sanic/pull/1778>`_
|
||||
Update README
|
||||
|
||||
*
|
||||
*
|
||||
`#1783 <https://github.com/huge-success/sanic/pull/1783>`_
|
||||
Fix typo
|
||||
|
||||
@ -326,7 +413,7 @@ Improved Documentation
|
||||
*
|
||||
`#1834 <https://github.com/huge-success/sanic/pull/1834>`_
|
||||
Order of listeners
|
||||
|
||||
|
||||
|
||||
Version 19.12.0
|
||||
===============
|
||||
@ -392,16 +479,16 @@ Version 19.6.2
|
||||
Features
|
||||
********
|
||||
|
||||
*
|
||||
*
|
||||
`#1562 <https://github.com/huge-success/sanic/pull/1562>`_
|
||||
Remove ``aiohttp`` dependency and create new ``SanicTestClient`` based upon
|
||||
`requests-async <https://github.com/encode/requests-async>`_
|
||||
|
||||
*
|
||||
*
|
||||
`#1475 <https://github.com/huge-success/sanic/pull/1475>`_
|
||||
Added ASGI support (Beta)
|
||||
|
||||
*
|
||||
*
|
||||
`#1436 <https://github.com/huge-success/sanic/pull/1436>`_
|
||||
Add Configure support from object string
|
||||
|
||||
@ -409,19 +496,19 @@ Features
|
||||
Bugfixes
|
||||
********
|
||||
|
||||
*
|
||||
*
|
||||
`#1587 <https://github.com/huge-success/sanic/pull/1587>`_
|
||||
Add missing handle for Expect header.
|
||||
|
||||
*
|
||||
*
|
||||
`#1560 <https://github.com/huge-success/sanic/pull/1560>`_
|
||||
Allow to disable Transfer-Encoding: chunked.
|
||||
|
||||
*
|
||||
*
|
||||
`#1558 <https://github.com/huge-success/sanic/pull/1558>`_
|
||||
Fix graceful shutdown.
|
||||
|
||||
*
|
||||
*
|
||||
`#1594 <https://github.com/huge-success/sanic/pull/1594>`_
|
||||
Strict Slashes behavior fix
|
||||
|
||||
@ -432,11 +519,11 @@ Deprecations and Removals
|
||||
`#1544 <https://github.com/huge-success/sanic/pull/1544>`_
|
||||
Drop dependency on distutil
|
||||
|
||||
*
|
||||
*
|
||||
`#1562 <https://github.com/huge-success/sanic/pull/1562>`_
|
||||
Drop support for Python 3.5
|
||||
|
||||
*
|
||||
*
|
||||
`#1568 <https://github.com/huge-success/sanic/pull/1568>`_
|
||||
Deprecate route removal.
|
||||
|
||||
@ -453,39 +540,39 @@ Version 19.3
|
||||
Features
|
||||
********
|
||||
|
||||
*
|
||||
*
|
||||
`#1497 <https://github.com/huge-success/sanic/pull/1497>`_
|
||||
Add support for zero-length and RFC 5987 encoded filename for
|
||||
multipart/form-data requests.
|
||||
|
||||
*
|
||||
*
|
||||
`#1484 <https://github.com/huge-success/sanic/pull/1484>`_
|
||||
The type of ``expires`` attribute of ``sanic.cookies.Cookie`` is now
|
||||
enforced to be of type ``datetime``.
|
||||
|
||||
*
|
||||
*
|
||||
`#1482 <https://github.com/huge-success/sanic/pull/1482>`_
|
||||
Add support for the ``stream`` parameter of ``sanic.Sanic.add_route()``
|
||||
available to ``sanic.Blueprint.add_route()``.
|
||||
|
||||
*
|
||||
*
|
||||
`#1481 <https://github.com/huge-success/sanic/pull/1481>`_
|
||||
Accept negative values for route parameters with type ``int`` or ``number``.
|
||||
|
||||
*
|
||||
*
|
||||
`#1476 <https://github.com/huge-success/sanic/pull/1476>`_
|
||||
Deprecated the use of ``sanic.request.Request.raw_args`` - it has a
|
||||
fundamental flaw in which is drops repeated query string parameters.
|
||||
Added ``sanic.request.Request.query_args`` as a replacement for the
|
||||
original use-case.
|
||||
|
||||
*
|
||||
*
|
||||
`#1472 <https://github.com/huge-success/sanic/pull/1472>`_
|
||||
Remove an unwanted ``None`` check in Request class ``repr`` implementation.
|
||||
This changes the default ``repr`` of a Request from ``<Request>`` to
|
||||
``<Request: None />``
|
||||
|
||||
*
|
||||
*
|
||||
`#1470 <https://github.com/huge-success/sanic/pull/1470>`_
|
||||
Added 2 new parameters to ``sanic.app.Sanic.create_server``\ :
|
||||
|
||||
@ -496,21 +583,21 @@ Features
|
||||
|
||||
This is a breaking change.
|
||||
|
||||
*
|
||||
*
|
||||
`#1499 <https://github.com/huge-success/sanic/pull/1499>`_
|
||||
Added a set of test cases that test and benchmark route resolution.
|
||||
|
||||
*
|
||||
*
|
||||
`#1457 <https://github.com/huge-success/sanic/pull/1457>`_
|
||||
The type of the ``"max-age"`` value in a ``sanic.cookies.Cookie`` is now
|
||||
enforced to be an integer. Non-integer values are replaced with ``0``.
|
||||
|
||||
*
|
||||
*
|
||||
`#1445 <https://github.com/huge-success/sanic/pull/1445>`_
|
||||
Added the ``endpoint`` attribute to an incoming ``request``\ , containing the
|
||||
name of the handler function.
|
||||
|
||||
*
|
||||
*
|
||||
`#1423 <https://github.com/huge-success/sanic/pull/1423>`_
|
||||
Improved request streaming. ``request.stream`` is now a bounded-size buffer
|
||||
instead of an unbounded queue. Callers must now call
|
||||
@ -523,7 +610,7 @@ Bugfixes
|
||||
********
|
||||
|
||||
|
||||
*
|
||||
*
|
||||
`#1502 <https://github.com/huge-success/sanic/pull/1502>`_
|
||||
Sanic was prefetching ``time.time()`` and updating it once per second to
|
||||
avoid excessive ``time.time()`` calls. The implementation was observed to
|
||||
@ -531,25 +618,25 @@ Bugfixes
|
||||
to negligible, so this has been removed. Fixes
|
||||
`#1500 <https://github.com/huge-success/sanic/pull/1500>`_
|
||||
|
||||
*
|
||||
*
|
||||
`#1501 <https://github.com/huge-success/sanic/pull/1501>`_
|
||||
Fix a bug in the auto-reloader when the process was launched as a module
|
||||
i.e. ``python -m init0.mod1`` where the sanic server is started
|
||||
in ``init0/mod1.py`` with ``debug`` enabled and imports another module in
|
||||
``init0``.
|
||||
|
||||
*
|
||||
*
|
||||
`#1376 <https://github.com/huge-success/sanic/pull/1376>`_
|
||||
Allow sanic test client to bind to a random port by specifying
|
||||
``port=None`` when constructing a ``SanicTestClient``
|
||||
|
||||
*
|
||||
*
|
||||
`#1399 <https://github.com/huge-success/sanic/pull/1399>`_
|
||||
Added the ability to specify middleware on a blueprint group, so that all
|
||||
routes produced from the blueprints in the group have the middleware
|
||||
applied.
|
||||
|
||||
*
|
||||
*
|
||||
`#1442 <https://github.com/huge-success/sanic/pull/1442>`_
|
||||
Allow the the use the ``SANIC_ACCESS_LOG`` environment variable to
|
||||
enable/disable the access log when not explicitly passed to ``app.run()``.
|
||||
@ -591,7 +678,7 @@ Version 18.12
|
||||
18.12.0
|
||||
*******
|
||||
|
||||
*
|
||||
*
|
||||
Changes:
|
||||
|
||||
|
||||
@ -609,7 +696,7 @@ Version 18.12
|
||||
* Deprecate Handler.log
|
||||
* Pinned httptools requirement to version 0.0.10+
|
||||
|
||||
*
|
||||
*
|
||||
Fixes:
|
||||
|
||||
|
||||
|
@ -1 +1 @@
|
||||
__version__ = "20.9.1"
|
||||
__version__ = "20.12.3"
|
||||
|
30
sanic/app.py
30
sanic/app.py
@ -12,6 +12,7 @@ from ssl import Purpose, SSLContext, create_default_context
|
||||
from traceback import format_exc
|
||||
from typing import Any, Dict, Optional, Type, Union
|
||||
from urllib.parse import urlencode, urlunparse
|
||||
from warnings import warn
|
||||
|
||||
from sanic import reloader_helpers
|
||||
from sanic.asgi import ASGIApp
|
||||
@ -50,6 +51,7 @@ class Sanic:
|
||||
strict_slashes=False,
|
||||
log_config=None,
|
||||
configure_logging=True,
|
||||
register=None,
|
||||
):
|
||||
|
||||
# Get name from previous stack frame
|
||||
@ -88,7 +90,11 @@ class Sanic:
|
||||
# Register alternative method names
|
||||
self.go_fast = self.run
|
||||
|
||||
self.__class__.register_app(self)
|
||||
if register is not None:
|
||||
self.config.REGISTER = register
|
||||
|
||||
if self.config.REGISTER:
|
||||
self.__class__.register_app(self)
|
||||
|
||||
@property
|
||||
def loop(self):
|
||||
@ -489,9 +495,7 @@ class Sanic:
|
||||
websocket_handler = partial(
|
||||
self._websocket_handler, handler, subprotocols=subprotocols
|
||||
)
|
||||
websocket_handler.__name__ = (
|
||||
"websocket_handler_" + handler.__name__
|
||||
)
|
||||
websocket_handler.__name__ = handler.__name__
|
||||
routes.extend(
|
||||
self.router.add(
|
||||
uri=uri,
|
||||
@ -742,6 +746,24 @@ class Sanic:
|
||||
kw.update(name=view_name)
|
||||
|
||||
uri, route = self.router.find_route_by_view_name(view_name, **kw)
|
||||
|
||||
# TODO(laggardkernel): this fix should be removed in v21.3.
|
||||
# Try again without the unnecessary prefix "websocket_handler_",
|
||||
# which was added by accident on non-blueprint handlers. GH-2021
|
||||
if not (uri and route) and view_name.startswith("websocket_handler_"):
|
||||
view_name = view_name[18:]
|
||||
uri, route = self.router.find_route_by_view_name(view_name, **kw)
|
||||
if uri and route:
|
||||
warn(
|
||||
"The bug of adding unnecessary `websocket_handler_` "
|
||||
"prefix in param `view_name` for non-blueprint handlers "
|
||||
"is fixed. This backward support will be removed in "
|
||||
"v21.3. Please update `Sanic.url_for()` callings in your "
|
||||
"code soon.",
|
||||
DeprecationWarning,
|
||||
stacklevel=2,
|
||||
)
|
||||
|
||||
if not (uri and route):
|
||||
raise URLBuildError(
|
||||
f"Endpoint with name `{view_name}` was not found"
|
||||
|
@ -40,6 +40,7 @@ DEFAULT_CONFIG = {
|
||||
"PROXIES_COUNT": None,
|
||||
"FORWARDED_FOR_HEADER": "X-Forwarded-For",
|
||||
"FALLBACK_ERROR_FORMAT": "html",
|
||||
"REGISTER": True,
|
||||
}
|
||||
|
||||
|
||||
|
5
setup.py
5
setup.py
@ -57,7 +57,8 @@ setup_kwargs = {
|
||||
"author": "Sanic Community",
|
||||
"author_email": "admhpkns@gmail.com",
|
||||
"description": (
|
||||
"A web server and web framework that's written to go fast. Build fast. Run fast."
|
||||
"A web server and web framework that's written to go fast. "
|
||||
"Build fast. Run fast."
|
||||
),
|
||||
"long_description": long_description,
|
||||
"packages": ["sanic"],
|
||||
@ -80,7 +81,7 @@ env_dependency = (
|
||||
'; sys_platform != "win32" ' 'and implementation_name == "cpython"'
|
||||
)
|
||||
ujson = "ujson>=1.35" + env_dependency
|
||||
uvloop = "uvloop>=0.5.3" + env_dependency
|
||||
uvloop = "uvloop>=0.5.3,<0.15.0" + env_dependency
|
||||
|
||||
requirements = [
|
||||
"httptools>=0.0.10",
|
||||
|
@ -3,6 +3,7 @@ import logging
|
||||
import sys
|
||||
|
||||
from inspect import isawaitable
|
||||
from os import environ
|
||||
from unittest.mock import patch
|
||||
|
||||
import pytest
|
||||
@ -290,6 +291,7 @@ def test_app_registry_name_reuse():
|
||||
with pytest.raises(SanicException):
|
||||
Sanic("test")
|
||||
Sanic.test_mode = True
|
||||
Sanic("test")
|
||||
|
||||
|
||||
def test_app_registry_retrieval():
|
||||
@ -306,3 +308,17 @@ def test_get_app_does_not_exist_force_create():
|
||||
assert isinstance(
|
||||
Sanic.get_app("does-not-exist", force_create=True), Sanic
|
||||
)
|
||||
|
||||
|
||||
def test_app_no_registry():
|
||||
Sanic("no-register", register=False)
|
||||
with pytest.raises(SanicException):
|
||||
Sanic.get_app("no-register")
|
||||
|
||||
|
||||
def test_app_no_registry_env():
|
||||
environ["SANIC_REGISTER"] = "False"
|
||||
Sanic("no-register")
|
||||
with pytest.raises(SanicException):
|
||||
Sanic.get_app("no-register")
|
||||
del environ["SANIC_REGISTER"]
|
||||
|
@ -348,3 +348,13 @@ def test_methodview_naming(methodview_app):
|
||||
|
||||
assert viewone_url == "/view_one"
|
||||
assert viewtwo_url == "/view_two"
|
||||
|
||||
|
||||
def test_url_for_with_websocket_handlers(app):
|
||||
# Test for a specific bugfix in GH-2021
|
||||
@app.websocket("/ws")
|
||||
async def my_handler(request, ws):
|
||||
pass
|
||||
|
||||
assert app.url_for("my_handler") == "/ws"
|
||||
assert app.url_for("websocket_handler_my_handler") == "/ws"
|
||||
|
Loading…
x
Reference in New Issue
Block a user