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.

Reply via email to