Always show server location in ASGI (#2522)
Co-authored-by: Adam Hopkins <adam@amhopkins.com> Co-authored-by: Zhiwei Liang <zhi.wei.liang@outlook.com> Co-authored-by: Néstor Pérez <25409753+prryplatypus@users.noreply.github.com>
This commit is contained in:
		| @@ -1315,7 +1315,7 @@ class Sanic(BaseSanic, RunnerMixin, metaclass=TouchUpMeta): | ||||
|         self.config.update_config(config) | ||||
|  | ||||
|     @property | ||||
|     def asgi(self): | ||||
|     def asgi(self) -> bool: | ||||
|         return self.state.asgi | ||||
|  | ||||
|     @asgi.setter | ||||
|   | ||||
| @@ -525,7 +525,7 @@ class RunnerMixin(metaclass=SanicMeta): | ||||
|                     ) | ||||
|                 ) | ||||
|             else: | ||||
|                 server = "" | ||||
|                 server = "ASGI" if self.asgi else "unknown"  # type: ignore | ||||
|  | ||||
|             display = { | ||||
|                 "mode": " ".join(mode), | ||||
| @@ -571,8 +571,12 @@ class RunnerMixin(metaclass=SanicMeta): | ||||
|  | ||||
|     @property | ||||
|     def serve_location(self) -> str: | ||||
|         server_settings = self.state.server_info[0].settings | ||||
|         return self.get_server_location(server_settings) | ||||
|         try: | ||||
|             server_settings = self.state.server_info[0].settings | ||||
|             return self.get_server_location(server_settings) | ||||
|         except IndexError: | ||||
|             location = "ASGI" if self.asgi else "unknown"  # type: ignore | ||||
|             return f"http://<{location}>" | ||||
|  | ||||
|     @staticmethod | ||||
|     def get_server_location( | ||||
|   | ||||
| @@ -546,3 +546,13 @@ async def test_signals_triggered(app): | ||||
|     assert response.status_code == 200 | ||||
|     assert response.text == "test_signals_triggered" | ||||
|     assert signals_triggered == signals_expected | ||||
|  | ||||
|  | ||||
| @pytest.mark.asyncio | ||||
| async def test_asgi_serve_location(app): | ||||
|     @app.get("/") | ||||
|     def _request(request: Request): | ||||
|         return text(request.app.serve_location) | ||||
|  | ||||
|     _, response = await app.asgi_client.get("/") | ||||
|     assert response.text == "http://<ASGI>" | ||||
|   | ||||
| @@ -76,7 +76,7 @@ def test_full_message(client): | ||||
|     ) | ||||
|     response = client.recv() | ||||
|  | ||||
|     # AltSvcCheck touchup removes the Alt-Svc header from the  | ||||
|     # AltSvcCheck touchup removes the Alt-Svc header from the | ||||
|     # response in the Python 3.9+ in this case | ||||
|     assert len(response) == (151 if version_info < (3, 9) else 140) | ||||
|     assert b"200 OK" in response | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Adam Hopkins
					Adam Hopkins