### Fixed
+* Return `500` error response instead of exceptions when `raise_app_exceptions=False` is set on `ASGITransport`. (#2669)
* Ensure all WSGITransport environs have a SERVER_PROTOCOL. (#2708)
## 0.24.1 (17th May, 2023)
try:
await self.app(scope, receive, send)
except Exception: # noqa: PIE-786
- if self.raise_app_exceptions or not response_complete.is_set():
+ if self.raise_app_exceptions:
raise
+ response_complete.set()
+ if status_code is None:
+ status_code = 500
+ if response_headers is None:
+ response_headers = {}
+
assert response_complete.is_set()
assert status_code is not None
assert response_headers is not None
import pytest
import httpx
+from httpx import ASGITransport
async def hello_world(scope, receive, send):
assert response.status_code == 200
assert disconnect
+
+
+@pytest.mark.anyio
+async def test_asgi_exc_no_raise():
+ transport = ASGITransport(app=raise_exc, raise_app_exceptions=False)
+ async with httpx.AsyncClient(transport=transport) as client:
+ response = await client.get("http://www.example.org/")
+
+ assert response.status_code == 500