Package: src:starlette Version: 0.41.3-2 Severity: serious Tags: ftbfs trixie sid
Dear maintainer: During a rebuild of all packages in unstable, your package failed to build: -------------------------------------------------------------------------------- [...] debian/rules clean dh clean --with python3 --buildsystem=pybuild dh_auto_clean -O--buildsystem=pybuild dh_autoreconf_clean -O--buildsystem=pybuild dh_clean -O--buildsystem=pybuild debian/rules binary dh binary --with python3 --buildsystem=pybuild dh_update_autotools_config -O--buildsystem=pybuild dh_autoreconf -O--buildsystem=pybuild dh_auto_configure -O--buildsystem=pybuild dh_auto_build -O--buildsystem=pybuild I: pybuild plugin_pyproject:129: Building wheel for python3.13 with "build" module I: pybuild base:311: python3.13 -m build --skip-dependency-check --no-isolation --wheel --outdir /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_starlette * Building wheel... Successfully built starlette-0.41.3-py3-none-any.whl I: pybuild plugin_pyproject:144: Unpacking wheel built for python3.13 with "installer" module dh_auto_test -O--buildsystem=pybuild I: pybuild base:311: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_starlette/build; python3.13 -m pytest tests ============================= test session starts ============================== platform linux -- Python 3.13.2, pytest-8.3.4, pluggy-1.5.0 rootdir: /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_starlette/build configfile: pyproject.toml plugins: anyio-4.8.0, typeguard-4.4.2 collected 863 items tests/middleware/test_base.py .....x.........................x.......... [ 4%] ........... [ 6%] tests/middleware/test_cors.py .............................. [ 9%] tests/middleware/test_errors.py ............ [ 11%] tests/middleware/test_gzip.py .......... [ 12%] tests/middleware/test_https_redirect.py .. [ 12%] tests/middleware/test_middleware.py .. [ 12%] tests/middleware/test_session.py .............. [ 14%] tests/middleware/test_trusted_host.py ..... [ 14%] tests/middleware/test_wsgi.py .F...F.... [ 15%] tests/test__utils.py .......... [ 17%] tests/test_applications.py ............................................. [ 22%] ......... [ 23%] tests/test_authentication.py ........... [ 24%] tests/test_background.py ........ [ 25%] tests/test_concurrency.py ...... [ 26%] tests/test_config.py ..... [ 26%] tests/test_convertors.py ...... [ 27%] tests/test_datastructures.py .............................. [ 31%] tests/test_endpoints.py .................... [ 33%] tests/test_exceptions.py ..................... [ 35%] tests/test_formparsers.py .............................................. [ 41%] .......................... [ 44%] tests/test_requests.py ...FF......................................FF.... [ 49%] .................................... [ 53%] tests/test_responses.py ................................................ [ 59%] ......................................................... [ 66%] tests/test_routing.py .................................................. [ 71%] ....................................... [ 76%] tests/test_schemas.py ... [ 76%] tests/test_staticfiles.py .............................................. [ 82%] ........ [ 83%] tests/test_status.py .. [ 83%] tests/test_templates.py ........................ [ 86%] tests/test_testclient.py ............................................. [ 91%] tests/test_websockets.py ............................................... [ 96%] ............................ [100%] =================================== FAILURES =================================== ___________________________ test_wsgi_post[asyncio] ____________________________ test_client_factory = functools.partial(<class 'starlette.testclient.TestClient'>, backend='asyncio', backend_options={}) def test_wsgi_post(test_client_factory: TestClientFactory) -> None: app = WSGIMiddleware(echo_body) client = test_client_factory(app) response = client.post("/", json={"example": 123}) assert response.status_code == 200 > assert response.text == '{"example": 123}' E assert '{"example":123}' == '{"example": 123}' E E - {"example": 123} E ? - E + {"example":123} tests/middleware/test_wsgi.py:80: AssertionError _____________________________ test_wsgi_post[trio] _____________________________ test_client_factory = functools.partial(<class 'starlette.testclient.TestClient'>, backend='trio', backend_options={}) def test_wsgi_post(test_client_factory: TestClientFactory) -> None: app = WSGIMiddleware(echo_body) client = test_client_factory(app) response = client.post("/", json={"example": 123}) assert response.status_code == 200 > assert response.text == '{"example": 123}' E assert '{"example":123}' == '{"example": 123}' E E - {"example": 123} E ? - E + {"example":123} tests/middleware/test_wsgi.py:80: AssertionError __________________________ test_request_body[asyncio] __________________________ test_client_factory = functools.partial(<class 'starlette.testclient.TestClient'>, backend='asyncio', backend_options={}) def test_request_body(test_client_factory: TestClientFactory) -> None: async def app(scope: Scope, receive: Receive, send: Send) -> None: request = Request(scope, receive) body = await request.body() response = JSONResponse({"body": body.decode()}) await response(scope, receive, send) client = test_client_factory(app) response = client.get("/") assert response.json() == {"body": ""} response = client.post("/", json={"a": "123"}) > assert response.json() == {"body": '{"a": "123"}'} E assert {'body': '{"a":"123"}'} == {'body': '{"a": "123"}'} E E Differing items: E {'body': '{"a":"123"}'} != {'body': '{"a": "123"}'} E Use -v to get more diff tests/test_requests.py:94: AssertionError _________________________ test_request_stream[asyncio] _________________________ test_client_factory = functools.partial(<class 'starlette.testclient.TestClient'>, backend='asyncio', backend_options={}) def test_request_stream(test_client_factory: TestClientFactory) -> None: async def app(scope: Scope, receive: Receive, send: Send) -> None: request = Request(scope, receive) body = b"" async for chunk in request.stream(): body += chunk response = JSONResponse({"body": body.decode()}) await response(scope, receive, send) client = test_client_factory(app) response = client.get("/") assert response.json() == {"body": ""} response = client.post("/", json={"a": "123"}) > assert response.json() == {"body": '{"a": "123"}'} E assert {'body': '{"a":"123"}'} == {'body': '{"a": "123"}'} E E Differing items: E {'body': '{"a":"123"}'} != {'body': '{"a": "123"}'} E Use -v to get more diff tests/test_requests.py:115: AssertionError ___________________________ test_request_body[trio] ____________________________ test_client_factory = functools.partial(<class 'starlette.testclient.TestClient'>, backend='trio', backend_options={}) def test_request_body(test_client_factory: TestClientFactory) -> None: async def app(scope: Scope, receive: Receive, send: Send) -> None: request = Request(scope, receive) body = await request.body() response = JSONResponse({"body": body.decode()}) await response(scope, receive, send) client = test_client_factory(app) response = client.get("/") assert response.json() == {"body": ""} response = client.post("/", json={"a": "123"}) > assert response.json() == {"body": '{"a": "123"}'} E assert {'body': '{"a":"123"}'} == {'body': '{"a": "123"}'} E E Differing items: E {'body': '{"a":"123"}'} != {'body': '{"a": "123"}'} E Use -v to get more diff tests/test_requests.py:94: AssertionError __________________________ test_request_stream[trio] ___________________________ test_client_factory = functools.partial(<class 'starlette.testclient.TestClient'>, backend='trio', backend_options={}) def test_request_stream(test_client_factory: TestClientFactory) -> None: async def app(scope: Scope, receive: Receive, send: Send) -> None: request = Request(scope, receive) body = b"" async for chunk in request.stream(): body += chunk response = JSONResponse({"body": body.decode()}) await response(scope, receive, send) client = test_client_factory(app) response = client.get("/") assert response.json() == {"body": ""} response = client.post("/", json={"a": "123"}) > assert response.json() == {"body": '{"a": "123"}'} E assert {'body': '{"a":"123"}'} == {'body': '{"a": "123"}'} E E Differing items: E {'body': '{"a":"123"}'} != {'body': '{"a": "123"}'} E Use -v to get more diff tests/test_requests.py:115: AssertionError =================== 6 failed, 855 passed, 2 xfailed in 3.89s =================== E: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_starlette/build; python3.13 -m pytest tests dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.13 returned exit code 13 make: *** [debian/rules:5: binary] Error 25 dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2 -------------------------------------------------------------------------------- The above is just how the build ends and not necessarily the most relevant part. If required, the full build log is available here: https://people.debian.org/~sanvila/build-logs/202503/ About the archive rebuild: The build was made on virtual machines from AWS, using sbuild and a reduced chroot with only build-essential packages. If you could not reproduce the bug please contact me privately, as I am willing to provide ssh access to a virtual machine where the bug is fully reproducible. If this is really a bug in one of the build-depends, please use reassign and add an affects on src:starlette, so that this is still visible in the BTS web page for this package. Thanks.