Source: python-testfixtures
Version: 8.3.0-1
Severity: normal
User: debian-pyt...@lists.debian.org
Usertags: python3.13

This package failed build from source when test-built against a version of
python3-defaults that includes 3.13 as a supported version.

To reproduce this issue, build against python3-defaults (python3-all-dev etc.)
from Debian experimental.

What's new in Python 3.13:
https://docs.python.org/3.13/whatsnew/3.13.html

Log snippet:

testfixtures/tests/test_time.py ..............................           [ 98%]
testfixtures/tests/test_twisted.py ............                          [ 99%]
testfixtures/tests/test_wrap.py ..............                           [100%]

=================================== FAILURES ===================================
_ 
TestReplaceWithInterestingOriginsNotStrict.test_invalid_attribute_on_instance_of_slotted_class
 _

self = 
<testfixtures.tests.test_replace.TestReplaceWithInterestingOriginsNotStrict 
object at 0xffff9d9d85a0>

    def test_invalid_attribute_on_instance_of_slotted_class(self):
        obj = OriginE()
        assert not hasattr(obj, '__dict__')
        replace_ = Replacer()
        with ShouldRaise(AttributeError("'OriginE' object has no attribute 
'bad'")):
>           replace_(obj, name='bad', replacement=42, strict=self.strict)

testfixtures/tests/test_replace.py:1366: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
testfixtures/replace.py:143: in __call__
    self._replace(resolved, replacement_to_use)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <testfixtures.replace.Replacer object at 0xffff9cd013b0>
resolved = <Resolved: <not_there>>, value = 42

    def _replace(self, resolved: Resolved, value):
        if value is not_there:
            if resolved.setter is setattr:
                try:
                    delattr(resolved.container, resolved.name)
                except AttributeError:
                    pass
            if resolved.setter is setitem:
                try:
                    del resolved.container[resolved.name]
                except KeyError:
                    pass
        else:
>           resolved.setter(resolved.container, resolved.name, value)
E           AttributeError: 'OriginE' object has no attribute 'bad' and no 
__dict__ for setting new attributes

testfixtures/replace.py:48: AttributeError

During handling of the above exception, another exception occurred:

self = 
<testfixtures.tests.test_replace.TestReplaceWithInterestingOriginsNotStrict 
object at 0xffff9d9d85a0>

    def test_invalid_attribute_on_instance_of_slotted_class(self):
        obj = OriginE()
        assert not hasattr(obj, '__dict__')
        replace_ = Replacer()
>       with ShouldRaise(AttributeError("'OriginE' object has no attribute 
> 'bad'")):
E       AssertionError: AttributeError("'OriginE' object has no attribute 
'bad'") (expected) != AttributeError("'OriginE' object has no attribute 'bad' 
and no __dict__ for setting new attributes") (raised)

testfixtures/tests/test_replace.py:1365: AssertionError
=========================== short test summary info ============================
FAILED 
testfixtures/tests/test_replace.py::TestReplaceWithInterestingOriginsNotStrict::test_invalid_attribute_on_instance_of_slotted_class
======================== 1 failed, 1453 passed in 3.17s ========================
E: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_testfixtures/build; python3.13 -m 
pytest --ignore docs/.build
I: pybuild base:311: cd 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_testfixtures/build; python3.12 -m 
pytest --ignore docs/.build
============================= test session starts ==============================
platform linux -- Python 3.12.6, pytest-8.3.3, pluggy-1.5.0
django: settings: testfixtures.tests.test_django.settings (from ini)
rootdir: /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_testfixtures/build
configfile: pytest.ini
plugins: django-4.5.2, typeguard-4.3.0
collected 1454 items

testfixtures/tests/test_django/test_compare.py .                         [  0%]
docs/comparing.txt ..................................................... [  3%]
.............................................................            [  7%]
docs/datetime.txt ...................................................... [ 11%]
......                                                                   [ 12%]
docs/django.txt ..........                                               [ 12%]
docs/exceptions.txt ................                                     [ 13%]
docs/files.txt ......................................................... [ 17%]
............................................                             [ 20%]
docs/installation.txt ..                                                 [ 20%]
docs/logging.txt ....................................................... [ 24%]
                                                                         [ 24%]
docs/mocking.txt ....................................................... [ 28%]
..................................................                       [ 31%]
docs/streams.txt ........                                                [ 32%]
docs/utilities.txt ..............                                        [ 33%]
docs/warnings.txt .....................                                  [ 34%]
testfixtures/tests/test_compare.py ..................................... [ 37%]
........................................................................ [ 42%]
........................................................................ [ 47%]
......................                                                   [ 48%]
testfixtures/tests/test_comparison.py .................................. [ 51%]
.............................                                            [ 53%]
testfixtures/tests/test_date.py ..............................           [ 55%]
testfixtures/tests/test_datetime.py .................................... [ 57%]
.............                                                            [ 58%]
testfixtures/tests/test_diff.py ..                                       [ 58%]
testfixtures/tests/test_django/test_compare.py ........                  [ 59%]
testfixtures/tests/test_django/test_shouldraise.py ..                    [ 59%]
testfixtures/tests/test_generator.py ..                                  [ 59%]
testfixtures/tests/test_log_capture.py ..................                [ 60%]
testfixtures/tests/test_logcapture.py .................................. [ 63%]
.......                                                                  [ 63%]
testfixtures/tests/test_mappingcomparison.py ........................... [ 65%]
..                                                                       [ 65%]
testfixtures/tests/test_mock.py .............                            [ 66%]
testfixtures/tests/test_outputcapture.py ...........                     [ 67%]
testfixtures/tests/test_popen.py ....................................... [ 69%]
.................                                                        [ 71%]
testfixtures/tests/test_popen_docs.py .............                      [ 72%]
testfixtures/tests/test_rangecomparison.py ............................. [ 74%]
............                                                             [ 74%]
testfixtures/tests/test_replace.py ..................................... [ 77%]
................................................................         [ 81%]
testfixtures/tests/test_replacer.py .........                            [ 82%]
testfixtures/tests/test_roundcomparison.py ............................. [ 84%]
.........                                                                [ 85%]
testfixtures/tests/test_sequencecomparison.py .......................... [ 86%]
...........                                                              [ 87%]
testfixtures/tests/test_should_raise.py ................................ [ 89%]
..........                                                               [ 90%]
testfixtures/tests/test_shouldwarn.py ................                   [ 91%]
testfixtures/tests/test_stringcomparison.py ............                 [ 92%]
testfixtures/tests/test_sybil.py ........                                [ 92%]
testfixtures/tests/test_tempdir.py .........                             [ 93%]
testfixtures/tests/test_tempdirectory.py ............................... [ 95%]
.......                                                                  [ 96%]
testfixtures/tests/test_time.py ..............................           [ 98%]
testfixtures/tests/test_twisted.py ............                          [ 99%]
testfixtures/tests/test_wrap.py ..............                           [100%]

============================= 1454 passed in 3.11s =============================
dh_auto_test: error: pybuild --test -i python{version} -p "3.13 3.12" returned 
exit code 13
make: *** [debian/rules:11: binary] Error 25
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2
--------------------------------------------------------------------------------
Build finished at 2024-09-19T08:47:29Z


If required, the full build log is available here (for the next 30 days):
https://debusine.debian.net/artifact/789608/

This bug has been filed at "normal" severity, as we haven't started the
transition to add 3.13 as a supported version, yet. This will be raised to RC
as soon as that happens, hopefully well before trixie.

Thanks,

Stefano

Reply via email to