Package: src:python-pytest-subtests; Maintainer for src:python-pytest-subtests is Debian Python Team <team+python@tracker.debian.org>;
Reported by: Santiago Vila <sanvila@debian.org>
Date: Tue, 16 Dec 2025 19:49:54 UTC
Severity: serious
Tags: forky, ftbfs, sid, wontfix
Found in version python-pytest-subtests/0.15.0-1
Reply or subscribe to this bug.
View this report as an mbox folder, status mbox, maintainer mbox
Report forwarded
to debian-bugs-dist@lists.debian.org, sanvila@debian.org (additional cc recipient for {1123302}), Debian Python Team <team+python@tracker.debian.org> (src:python-pytest-subtests for {1123302}):
Bug#1123302; Package src:python-pytest-subtests.
(Tue, 16 Dec 2025 19:49:55 GMT) (full text, mbox, link).
Acknowledgement sent
to Santiago Vila <sanvila@debian.org>:
New Bug report received and forwarded. Copy sent to sanvila@debian.org, team+python@tracker.debian.org.
(Tue, 16 Dec 2025 19:49:55 GMT) (full text, mbox, link).
Message #5 received at submit@bugs.debian.org (full text, mbox, reply):
Package: src:python-pytest-subtests
Version: 0.15.0-1
Severity: serious
Tags: ftbfs forky sid
Dear maintainer:
During a rebuild of all packages in unstable, this package failed to build.
Below you will find the last part of the build log (probably the most
relevant part, but not necessarily). If required, the full build log
is available here:
https://people.debian.org/~sanvila/build-logs/202512/
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 cannot 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:python-pytest-subtests, so that this is still
visible in the BTS web page for this package.
Thanks.
--------------------------------------------------------------------------------
[...]
debian/rules clean
dh clean --buildsystem=pybuild
dh_auto_clean -O--buildsystem=pybuild
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:131: Building wheel for python3.14 with "build" module
I: pybuild base:317: python3.14 -m build --skip-dependency-check --no-isolation --wheel --outdir /<<PKGBUILDDIR>>/.pybuild/cpython3_3.14_pytest-subtests
* Building wheel...
/usr/lib/python3/dist-packages/setuptools/dist.py:759: SetuptoolsDeprecationWarning: License classifiers are deprecated.
[... snipped ...]
def test_foo(self):
for i in range(10):
with self.subTest("custom message", i=i):
if i < 4:
self.skipTest(f"skip subtest i={i}")
> assert i < 4
E AssertionError: assert 7 < 4
test_skip_with_failure_and_non_subskip.py:10: AssertionError
__________________________________________________________________________________ T.test_foo [custom message] (i=8) ___________________________________________________________________________________
self = <test_skip_with_failure_and_non_subskip.T testMethod=test_foo>
def test_foo(self):
for i in range(10):
with self.subTest("custom message", i=i):
if i < 4:
self.skipTest(f"skip subtest i={i}")
> assert i < 4
E AssertionError: assert 8 < 4
test_skip_with_failure_and_non_subskip.py:10: AssertionError
__________________________________________________________________________________ T.test_foo [custom message] (i=9) ___________________________________________________________________________________
self = <test_skip_with_failure_and_non_subskip.T testMethod=test_foo>
def test_foo(self):
for i in range(10):
with self.subTest("custom message", i=i):
if i < 4:
self.skipTest(f"skip subtest i={i}")
> assert i < 4
E AssertionError: assert 9 < 4
test_skip_with_failure_and_non_subskip.py:10: AssertionError
======================================================================================= short test summary info ========================================================================================
SUBSKIPPED[custom message] (i=0) [1] test_skip_with_failure_and_non_subskip.py:5: skip subtest i=0
SUBSKIPPED[custom message] (i=0) [1] test_skip_with_failure_and_non_subskip.py:5: skip subtest i=1
SUBSKIPPED[custom message] (i=0) [1] test_skip_with_failure_and_non_subskip.py:5: skip subtest i=2
SUBSKIPPED[custom message] (i=0) [1] test_skip_with_failure_and_non_subskip.py:5: skip subtest i=3
SUBSKIPPED[custom message] (i=0) [1] test_skip_with_failure_and_non_subskip.py:5: skip the test
SUBFAILED[custom message] (i=4) test_skip_with_failure_and_non_subskip.py::T::test_foo - AssertionError: assert 4 < 4
SUBFAILED[custom message] (i=5) test_skip_with_failure_and_non_subskip.py::T::test_foo - AssertionError: assert 5 < 4
SUBFAILED[custom message] (i=6) test_skip_with_failure_and_non_subskip.py::T::test_foo - AssertionError: assert 6 < 4
SUBFAILED[custom message] (i=7) test_skip_with_failure_and_non_subskip.py::T::test_foo - AssertionError: assert 7 < 4
SUBFAILED[custom message] (i=8) test_skip_with_failure_and_non_subskip.py::T::test_foo - AssertionError: assert 8 < 4
SUBFAILED[custom message] (i=9) test_skip_with_failure_and_non_subskip.py::T::test_foo - AssertionError: assert 9 < 4
===================================================================================== 6 failed, 5 skipped in 0.01s =====================================================================================
_________________________ TestLogging.test_no_logging __________________________
self = <test_subtests.TestLogging object at 0x7f8e4be76060>
pytester = <Pytester PosixPath('/tmp/pytest-of-sbuild/pytest-1/test_no_logging0')>
def test_no_logging(self, pytester: pytest.Pytester) -> None:
pytester.makepyfile(
"""
import logging
def test(subtests):
logging.info("start log line")
with subtests.test("sub passing"):
logging.info("inside %s", "passing log line")
with subtests.test("sub failing"):
logging.info("inside %s", "failing log line")
assert False
logging.info("end log line")
"""
)
result = pytester.runpytest("-p no:logging")
> result.stdout.fnmatch_lines(
[
"*1 passed*",
]
)
E Failed: nomatch: '*1 passed*'
E and: '============================= test session starts =============================='
E and: 'platform linux -- Python 3.13.11, pytest-9.0.2, pluggy-1.6.0'
E and: 'rootdir: /tmp/pytest-of-sbuild/pytest-1/test_no_logging0'
E and: 'plugins: typeguard-4.4.4, xdist-3.8.0'
E and: 'collected 1 item'
E and: ''
E and: 'test_no_logging.py uF [100%]'
E and: ''
E and: '=================================== FAILURES ==================================='
E and: '______________________________ test [sub failing] ______________________________'
E and: ''
E and: 'subtests = <_pytest.subtests.Subtests object at 0x7f8e4a102cf0>'
E and: ''
E and: ' def test(subtests):'
E and: ' logging.info("start log line")'
E and: ' '
E and: ' with subtests.test("sub passing"):'
E and: ' logging.info("inside %s", "passing log line")'
E and: ' '
E and: ' with subtests.test("sub failing"):'
E and: ' logging.info("inside %s", "failing log line")'
E and: '> assert False'
E and: 'E assert False'
E and: ''
E and: 'test_no_logging.py:11: AssertionError'
E and: '_____________________________________ test _____________________________________'
E and: 'contains 1 failed subtest'
E and: '=========================== short test summary info ============================'
E and: 'SUBFAILED[sub failing] test_no_logging.py::test - assert False'
E and: 'FAILED test_no_logging.py::test - contains 1 failed subtest'
E and: '============================== 2 failed in 0.00s ==============================='
E remains unmatched: '*1 passed*'
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_pytest-subtests/build/tests/test_subtests.py:738: Failed
----------------------------- Captured stdout call -----------------------------
============================= test session starts ==============================
platform linux -- Python 3.13.11, pytest-9.0.2, pluggy-1.6.0
rootdir: /tmp/pytest-of-sbuild/pytest-1/test_no_logging0
plugins: typeguard-4.4.4, xdist-3.8.0
collected 1 item
test_no_logging.py uF [100%]
=================================== FAILURES ===================================
______________________________ test [sub failing] ______________________________
subtests = <_pytest.subtests.Subtests object at 0x7f8e4a102cf0>
def test(subtests):
logging.info("start log line")
with subtests.test("sub passing"):
logging.info("inside %s", "passing log line")
with subtests.test("sub failing"):
logging.info("inside %s", "failing log line")
> assert False
E assert False
test_no_logging.py:11: AssertionError
_____________________________________ test _____________________________________
contains 1 failed subtest
=========================== short test summary info ============================
SUBFAILED[sub failing] test_no_logging.py::test - assert False
FAILED test_no_logging.py::test - contains 1 failed subtest
============================== 2 failed in 0.00s ===============================
________________________________ test_exitfirst ________________________________
pytester = <Pytester PosixPath('/tmp/pytest-of-sbuild/pytest-1/test_exitfirst0')>
def test_exitfirst(pytester: pytest.Pytester) -> None:
"""
Validate that when passing --exitfirst the test exits after the first failed subtest.
"""
pytester.makepyfile(
"""
def test_foo(subtests):
with subtests.test("sub1"):
assert False
with subtests.test("sub2"):
assert False
"""
)
result = pytester.runpytest("--exitfirst")
assert result.parseoutcomes()["failed"] == 2
> result.stdout.fnmatch_lines(
[
"*[[]sub1[]] SUBFAIL test_exitfirst.py::test_foo - assert False*",
"FAILED test_exitfirst.py::test_foo - assert False",
"* stopping after 2 failures*",
],
consecutive=True,
)
E Failed: nomatch: '*[[]sub1[]] SUBFAIL test_exitfirst.py::test_foo - assert False*'
E and: '============================= test session starts =============================='
E and: 'platform linux -- Python 3.13.11, pytest-9.0.2, pluggy-1.6.0'
E and: 'rootdir: /tmp/pytest-of-sbuild/pytest-1/test_exitfirst0'
E and: 'plugins: typeguard-4.4.4, xdist-3.8.0'
E and: 'collected 1 item'
E and: ''
E and: 'test_exitfirst.py uF'
E and: ''
E and: '=================================== FAILURES ==================================='
E and: '_______________________________ test_foo [sub1] ________________________________'
E and: ''
E and: 'subtests = <_pytest.subtests.Subtests object at 0x7f8e49f28d10>'
E and: ''
E and: ' def test_foo(subtests):'
E and: ' with subtests.test("sub1"):'
E and: '> assert False'
E and: 'E assert False'
E and: ''
E and: 'test_exitfirst.py:3: AssertionError'
E and: '___________________________________ test_foo ___________________________________'
E and: ''
E and: 'subtests = <_pytest.subtests.Subtests object at 0x7f8e49f28d10>'
E and: ''
E and: ' def test_foo(subtests):'
E and: ' with subtests.test("sub1"):'
E and: '> assert False'
E and: 'E assert False'
E and: ''
E and: 'test_exitfirst.py:3: AssertionError'
E and: '=========================== short test summary info ============================'
E and: 'SUBFAILED[sub1] test_exitfirst.py::test_foo - assert False'
E and: 'FAILED test_exitfirst.py::test_foo - assert False'
E and: '!!!!!!!!!!!!!!!!!!!!!!!!!! stopping after 2 failures !!!!!!!!!!!!!!!!!!!!!!!!!!!'
E and: '============================== 2 failed in 0.01s ==============================='
E remains unmatched: '*[[]sub1[]] SUBFAIL test_exitfirst.py::test_foo - assert False*'
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_pytest-subtests/build/tests/test_subtests.py:828: Failed
----------------------------- Captured stdout call -----------------------------
============================= test session starts ==============================
platform linux -- Python 3.13.11, pytest-9.0.2, pluggy-1.6.0
rootdir: /tmp/pytest-of-sbuild/pytest-1/test_exitfirst0
plugins: typeguard-4.4.4, xdist-3.8.0
collected 1 item
test_exitfirst.py uF
=================================== FAILURES ===================================
_______________________________ test_foo [sub1] ________________________________
subtests = <_pytest.subtests.Subtests object at 0x7f8e49f28d10>
def test_foo(subtests):
with subtests.test("sub1"):
> assert False
E assert False
test_exitfirst.py:3: AssertionError
___________________________________ test_foo ___________________________________
subtests = <_pytest.subtests.Subtests object at 0x7f8e49f28d10>
def test_foo(subtests):
with subtests.test("sub1"):
> assert False
E assert False
test_exitfirst.py:3: AssertionError
=========================== short test summary info ============================
SUBFAILED[sub1] test_exitfirst.py::test_foo - assert False
FAILED test_exitfirst.py::test_foo - assert False
!!!!!!!!!!!!!!!!!!!!!!!!!! stopping after 2 failures !!!!!!!!!!!!!!!!!!!!!!!!!!!
============================== 2 failed in 0.01s ===============================
=========================== short test summary info ============================
XFAIL tests/test_subtests.py::TestSubTest::test_skip[pytest-normal] - Not producing the expected results (#5)
XFAIL tests/test_subtests.py::TestSubTest::test_skip[pytest-xdist] - Not producing the expected results (#5)
XFAIL tests/test_subtests.py::TestSubTest::test_xfail[unittest] - Not producing the expected results (#5)
XFAIL tests/test_subtests.py::TestSubTest::test_xfail[pytest-normal] - Not producing the expected results (#5)
XFAIL tests/test_subtests.py::TestSubTest::test_xfail[pytest-xdist] - Not producing the expected results (#5)
XFAIL tests/test_subtests.py::TestSubTest::test_skip_with_failure[pytest-xdist] - Not producing the expected results (#5)
XFAIL tests/test_subtests.py::TestSubTest::test_skip_with_failure_and_non_subskip[pytest-xdist] - Not producing the expected results (#5)
FAILED tests/test_subtests.py::TestFixture::test_simple_terminal_normal[normal]
FAILED tests/test_subtests.py::TestFixture::test_simple_terminal_normal[xdist]
FAILED tests/test_subtests.py::TestFixture::test_simple_terminal_verbose[normal]
FAILED tests/test_subtests.py::TestFixture::test_simple_terminal_verbose[xdist]
FAILED tests/test_subtests.py::TestFixture::test_skip[normal] - Failed: nomat...
FAILED tests/test_subtests.py::TestFixture::test_skip[xdist] - Failed: nomatc...
FAILED tests/test_subtests.py::TestFixture::test_xfail[normal] - Failed: noma...
FAILED tests/test_subtests.py::TestFixture::test_xfail[xdist] - Failed: nomat...
FAILED tests/test_subtests.py::TestFixture::test_typing_exported[normal] - Fa...
FAILED tests/test_subtests.py::TestFixture::test_typing_exported[xdist] - Fai...
FAILED tests/test_subtests.py::TestFixture::test_no_subtests_reports[normal]
FAILED tests/test_subtests.py::TestFixture::test_no_subtests_reports[xdist]
FAILED tests/test_subtests.py::TestSubTest::test_simple_terminal_normal[pytest-normal]
FAILED tests/test_subtests.py::TestSubTest::test_simple_terminal_normal[pytest-xdist]
FAILED tests/test_subtests.py::TestSubTest::test_simple_terminal_verbose[pytest-normal]
FAILED tests/test_subtests.py::TestSubTest::test_simple_terminal_verbose[pytest-xdist]
FAILED tests/test_subtests.py::TestSubTest::test_skip_with_failure[pytest-normal]
FAILED tests/test_subtests.py::TestSubTest::test_skip_with_failure_and_non_subskip[pytest-normal]
FAILED tests/test_subtests.py::TestLogging::test_no_logging - Failed: nomatch...
FAILED tests/test_subtests.py::test_exitfirst - Failed: nomatch: '*[[]sub1[]]...
=================== 20 failed, 14 passed, 7 xfailed in 2.60s ===================
E: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_pytest-subtests/build; python3.13 -m pytest tests
dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p "3.14 3.13" returned exit code 13
make: *** [debian/rules:9: binary] Error 25
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2
--------------------------------------------------------------------------------
Added tag(s) wontfix.
Request was from Alexandre Detiste <alexandre.detiste@gmail.com>
to control@bugs.debian.org.
(Mon, 29 Dec 2025 19:51:02 GMT) (full text, mbox, link).
Send a report that this bug log contains spam.
Debbugs is free software and licensed under the terms of the GNU General Public License version 2. The current version can be obtained from https://bugs.debian.org/debbugs-source/.
Copyright © 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson, 2005-2017 Don Armstrong, and many other contributors.