Package: src:pytest-httpx
Version: 0.34.0-1
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 --buildsystem=pybuild
debian/rules override_dh_auto_clean
make[1]: Entering directory '/<<PKGBUILDDIR>>'
dh_auto_clean
rm -rf pytest_httpx.egg-info/
make[1]: Leaving directory '/<<PKGBUILDDIR>>'
dh_autoreconf_clean -O--buildsystem=pybuild
dh_clean -O--buildsystem=pybuild
debian/rules binary
dh binary --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_pytest-httpx
* Building wheel...
No `packages` or `py_modules` configuration, performing automatic discovery.
`flat-layout` detected -- analysing .
discovered packages -- ['pytest_httpx']
running bdist_wheel
running build
running build_py
creating build/lib/pytest_httpx
copying pytest_httpx/_httpx_internals.py -> build/lib/pytest_httpx
copying pytest_httpx/_httpx_mock.py -> build/lib/pytest_httpx
copying pytest_httpx/__init__.py -> build/lib/pytest_httpx
copying pytest_httpx/_request_matcher.py -> build/lib/pytest_httpx
copying pytest_httpx/_pretty_print.py -> build/lib/pytest_httpx
copying pytest_httpx/version.py -> build/lib/pytest_httpx
copying pytest_httpx/_options.py -> build/lib/pytest_httpx
running egg_info
creating pytest_httpx.egg-info
writing pytest_httpx.egg-info/PKG-INFO
writing dependency_links to pytest_httpx.egg-info/dependency_links.txt
writing entry points to pytest_httpx.egg-info/entry_points.txt
writing requirements to pytest_httpx.egg-info/requires.txt
writing top-level names to pytest_httpx.egg-info/top_level.txt
writing manifest file 'pytest_httpx.egg-info/SOURCES.txt'
reading manifest file 'pytest_httpx.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
adding license file 'LICENSE'
writing manifest file 'pytest_httpx.egg-info/SOURCES.txt'
copying pytest_httpx/py.typed -> build/lib/pytest_httpx
installing to build/bdist.linux-x86_64/wheel
running install
running install_lib
creating build/bdist.linux-x86_64/wheel
creating build/bdist.linux-x86_64/wheel/pytest_httpx
copying build/lib/pytest_httpx/_httpx_internals.py ->
build/bdist.linux-x86_64/wheel/./pytest_httpx
copying build/lib/pytest_httpx/_httpx_mock.py ->
build/bdist.linux-x86_64/wheel/./pytest_httpx
copying build/lib/pytest_httpx/__init__.py ->
build/bdist.linux-x86_64/wheel/./pytest_httpx
copying build/lib/pytest_httpx/_request_matcher.py ->
build/bdist.linux-x86_64/wheel/./pytest_httpx
copying build/lib/pytest_httpx/_pretty_print.py ->
build/bdist.linux-x86_64/wheel/./pytest_httpx
copying build/lib/pytest_httpx/py.typed ->
build/bdist.linux-x86_64/wheel/./pytest_httpx
copying build/lib/pytest_httpx/version.py ->
build/bdist.linux-x86_64/wheel/./pytest_httpx
copying build/lib/pytest_httpx/_options.py ->
build/bdist.linux-x86_64/wheel/./pytest_httpx
running install_egg_info
Copying pytest_httpx.egg-info to
build/bdist.linux-x86_64/wheel/./pytest_httpx-0.34.0.egg-info
running install_scripts
creating build/bdist.linux-x86_64/wheel/pytest_httpx-0.34.0.dist-info/WHEEL
creating
'/<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_pytest-httpx/.tmp-dq5bmhgu/pytest_httpx-0.34.0-py3-none-any.whl'
and adding 'build/bdist.linux-x86_64/wheel' to it
adding 'pytest_httpx/__init__.py'
adding 'pytest_httpx/_httpx_internals.py'
adding 'pytest_httpx/_httpx_mock.py'
adding 'pytest_httpx/_options.py'
adding 'pytest_httpx/_pretty_print.py'
adding 'pytest_httpx/_request_matcher.py'
adding 'pytest_httpx/py.typed'
adding 'pytest_httpx/version.py'
adding 'pytest_httpx-0.34.0.dist-info/LICENSE'
adding 'pytest_httpx-0.34.0.dist-info/METADATA'
adding 'pytest_httpx-0.34.0.dist-info/WHEEL'
adding 'pytest_httpx-0.34.0.dist-info/entry_points.txt'
adding 'pytest_httpx-0.34.0.dist-info/top_level.txt'
adding 'pytest_httpx-0.34.0.dist-info/RECORD'
removing build/bdist.linux-x86_64/wheel
Successfully built pytest_httpx-0.34.0-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_pytest-httpx/build; python3.13 -m
pytest -k "not proxy"
============================= test session starts ==============================
platform linux -- Python 3.13.2, pytest-8.3.4, pluggy-1.5.0
rootdir: /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_pytest-httpx/build
configfile: pyproject.toml
plugins: httpx-0.34.0, asyncio-0.25.1, anyio-4.8.0, typeguard-4.4.2
asyncio: mode=Mode.STRICT, asyncio_default_fixture_loop_scope=function
collected 272 items / 10 deselected / 262 selected
tests/test_httpx_async.py .............................................. [ 17%]
.........................FF............................................. [ 45%]
..... [ 46%]
tests/test_httpx_sync.py ............................................... [ 64%]
...................FF................................................. [ 91%]
tests/test_plugin.py ...................... [100%]
=================================== FAILURES ===================================
____________________________ test_json_not_matching ____________________________
httpx_mock = <pytest_httpx._httpx_mock.HTTPXMock object at 0x7fc9399b9e80>
@pytest.mark.asyncio
@pytest.mark.httpx_mock(assert_all_requests_were_expected=False)
async def test_json_not_matching(httpx_mock: HTTPXMock) -> None:
httpx_mock.add_response(match_json={"a": 1, "b": 2}, is_optional=True)
async with httpx.AsyncClient() as client:
with pytest.raises(httpx.TimeoutException) as exception_info:
await client.post("https://test_url", json={"c": 3, "b": 2,
"a": 1})
> assert (
str(exception_info.value)
== """No response can be found for POST request on
https://test_url with b'{"c": 3, "b": 2, "a": 1}' body amongst:
- Match any request with {'a': 1, 'b': 2} json body"""
)
E assert 'No response ... 2} json body' == 'No response ... 2} json
body'
E
E Skipping 64 identical leading characters in diff, use -v to show
E - th b'{"c": 3, "b": 2, "a": 1}' body amongst:
E ? - - - - -
E + th b'{"c":3,"b":2,"a":1}' body amongst:
E - Match any request with {'a': 1, 'b': 2} json body
tests/test_httpx_async.py:1481: AssertionError
______________________ test_headers_and_json_not_matching ______________________
httpx_mock = <pytest_httpx._httpx_mock.HTTPXMock object at 0x7fc939ed8ec0>
@pytest.mark.asyncio
@pytest.mark.httpx_mock(assert_all_requests_were_expected=False)
async def test_headers_and_json_not_matching(httpx_mock: HTTPXMock) -> None:
httpx_mock.add_response(
match_json={"a": 1, "b": 2},
match_headers={"foo": "bar"},
is_optional=True,
)
async with httpx.AsyncClient() as client:
with pytest.raises(httpx.TimeoutException) as exception_info:
await client.post("https://test_url", json={"c": 3, "b": 2,
"a": 1})
> assert (
str(exception_info.value)
== """No response can be found for POST request on
https://test_url with {} headers and b'{"c": 3, "b": 2, "a": 1}' body amongst:
- Match any request with {'foo': 'bar'} headers and {'a': 1, 'b': 2} json
body"""
)
E assert 'No response ... 2} json body' == 'No response ... 2} json
body'
E
E Skipping 79 identical leading characters in diff, use -v to show
E - nd b'{"c": 3, "b": 2, "a": 1}' body amongst:
E ? - - - - -
E + nd b'{"c":3,"b":2,"a":1}' body amongst:
E - Match any request with {'foo': 'bar'} headers and {'a': 1,
'b': 2} json body
tests/test_httpx_async.py:1500: AssertionError
____________________________ test_json_not_matching ____________________________
httpx_mock = <pytest_httpx._httpx_mock.HTTPXMock object at 0x7fc9399f11d0>
@pytest.mark.httpx_mock(assert_all_requests_were_expected=False)
def test_json_not_matching(httpx_mock: HTTPXMock) -> None:
httpx_mock.add_response(match_json={"a": 1, "b": 2}, is_optional=True)
with httpx.Client() as client:
with pytest.raises(httpx.TimeoutException) as exception_info:
client.post("https://test_url", json={"c": 3, "b": 2, "a": 1})
> assert (
str(exception_info.value)
== """No response can be found for POST request on
https://test_url with b'{"c": 3, "b": 2, "a": 1}' body amongst:
- Match any request with {'a': 1, 'b': 2} json body"""
)
E assert 'No response ... 2} json body' == 'No response ... 2} json
body'
E
E Skipping 64 identical leading characters in diff, use -v to show
E - th b'{"c": 3, "b": 2, "a": 1}' body amongst:
E ? - - - - -
E + th b'{"c":3,"b":2,"a":1}' body amongst:
E - Match any request with {'a': 1, 'b': 2} json body
tests/test_httpx_sync.py:1240: AssertionError
______________________ test_headers_and_json_not_matching ______________________
httpx_mock = <pytest_httpx._httpx_mock.HTTPXMock object at 0x7fc939e5c2f0>
@pytest.mark.httpx_mock(assert_all_requests_were_expected=False)
def test_headers_and_json_not_matching(httpx_mock: HTTPXMock) -> None:
httpx_mock.add_response(
match_json={"a": 1, "b": 2},
match_headers={"foo": "bar"},
is_optional=True,
)
with httpx.Client() as client:
with pytest.raises(httpx.TimeoutException) as exception_info:
client.post("https://test_url", json={"c": 3, "b": 2, "a": 1})
> assert (
str(exception_info.value)
== """No response can be found for POST request on
https://test_url with {} headers and b'{"c": 3, "b": 2, "a": 1}' body amongst:
- Match any request with {'foo': 'bar'} headers and {'a': 1, 'b': 2} json
body"""
)
E assert 'No response ... 2} json body' == 'No response ... 2} json
body'
E
E Skipping 79 identical leading characters in diff, use -v to show
E - nd b'{"c": 3, "b": 2, "a": 1}' body amongst:
E ? - - - - -
E + nd b'{"c":3,"b":2,"a":1}' body amongst:
E - Match any request with {'foo': 'bar'} headers and {'a': 1,
'b': 2} json body
tests/test_httpx_sync.py:1258: AssertionError
=============================== warnings summary ===============================
tests/test_httpx_async.py: 1 warning
tests/test_httpx_sync.py: 1 warning
tests/test_plugin.py: 22 warnings
/usr/lib/python3/dist-packages/pytest_asyncio/plugin.py:207:
PytestDeprecationWarning: The configuration option
"asyncio_default_fixture_loop_scope" is unset.
The event loop scope for asynchronous fixtures will default to the fixture
caching scope. Future versions of pytest-asyncio will default the loop scope
for asynchronous fixtures to function scope. Set the default fixture loop scope
explicitly in order to avoid unexpected behavior in the future. Valid fixture
loop scopes are: "function", "class", "module", "package", "session"
warnings.warn(PytestDeprecationWarning(_DEFAULT_FIXTURE_LOOP_SCOPE_UNSET))
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=========================== short test summary info ============================
FAILED tests/test_httpx_async.py::test_json_not_matching - assert 'No respons...
FAILED tests/test_httpx_async.py::test_headers_and_json_not_matching - assert...
FAILED tests/test_httpx_sync.py::test_json_not_matching - assert 'No response...
FAILED tests/test_httpx_sync.py::test_headers_and_json_not_matching - assert ...
========== 4 failed, 258 passed, 10 deselected, 24 warnings in 6.34s ===========
E: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_pytest-httpx/build; python3.13 -m
pytest -k "not proxy"
dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.13
returned exit code 13
make: *** [debian/rules:7: 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:pytest-httpx, so that this is still
visible in the BTS web page for this package.
Thanks.