[Freedombox-pkg-team] Bug#1058421: freedombox: FTBFS: failed tests

Lucas Nussbaum lucas at debian.org
Tue Dec 12 08:30:54 GMT 2023


Source: freedombox
Version: 23.21
Severity: serious
Justification: FTBFS
Tags: trixie sid ftbfs
User: lucas at debian.org
Usertags: ftbfs-20231212 ftbfs-trixie

Hi,

During a rebuild of all packages in sid, your package failed to build
on amd64.


Relevant part (hopefully):
> make[1]: Entering directory '/<<PKGBUILDDIR>>'
> PYBUILD_SYSTEM=custom \
> PYBUILD_TEST_ARGS="{interpreter} -m pytest" dh_auto_test
> 	pybuild --test --test-pytest -i python{version} -p "3.12 3.11"
> I: pybuild base:310: python3.12 -m pytest
> ============================= test session starts ==============================
> platform linux -- Python 3.12.1, pytest-7.4.3, pluggy-1.3.0
> django: settings: plinth.tests.data.django_test_settings (from option)
> rootdir: /<<PKGBUILDDIR>>
> configfile: pyproject.toml
> plugins: cov-4.1.0, django-4.5.2
> collected 623 items
> 
> plinth/modules/backups/tests/test_api.py ...........                     [  1%]
> plinth/modules/backups/tests/test_components.py ..                       [  2%]
> plinth/modules/backups/tests/test_ssh_remotes.py ssss                    [  2%]
> plinth/modules/backups/tests/test_store.py ....                          [  3%]
> plinth/modules/users/tests/test_views.py ........................        [  7%]
> plinth/tests/test_app.py ...                                             [  7%]
> plinth/tests/test_kvstore.py ....                                        [  8%]
> plinth/tests/test_middleware.py ..                                       [  8%]
> plinth/tests/test_notification.py ...................................... [ 14%]
> ....................                                                     [ 17%]
> plinth/tests/test_operation.py .                                         [ 18%]
> plinth/modules/apache/tests/test_components.py .............             [ 20%]
> plinth/modules/apache/tests/test_uws.py .                                [ 20%]
> plinth/modules/backups/tests/test_backups.py sssssssss                   [ 21%]
> plinth/modules/backups/tests/test_components.py ........................ [ 25%]
> .....................                                                    [ 29%]
> plinth/modules/backups/tests/test_schedule.py .......................... [ 33%]
> ...                                                                      [ 33%]
> plinth/modules/backups/tests/test_validators.py .....                    [ 34%]
> plinth/modules/bind/tests/test_bind.py ..                                [ 34%]
> plinth/modules/calibre/tests/test_privileged.py ...                      [ 35%]
> plinth/modules/calibre/tests/test_views.py ........                      [ 36%]
> plinth/modules/config/tests/test_config.py ...ss.                        [ 37%]
> plinth/modules/coturn/tests/test_components.py .......                   [ 38%]
> plinth/modules/deluge/tests/test_utils.py ...                            [ 39%]
> plinth/modules/diagnostics/tests/test_check.py ..                        [ 39%]
> plinth/modules/ejabberd/tests/test_turn_config.py ...                    [ 39%]
> plinth/modules/firewall/tests/test_components.py ..........              [ 41%]
> plinth/modules/gitweb/tests/test_privileged.py ..............            [ 43%]
> plinth/modules/gitweb/tests/test_views.py .................              [ 46%]
> plinth/modules/help/tests/test_views.py .........sss.s                   [ 48%]
> plinth/modules/i2p/tests/test_helpers.py .....                           [ 49%]
> plinth/modules/i2p/tests/test_router_editor.py ....                      [ 50%]
> plinth/modules/kiwix/tests/test_privileged.py ...                        [ 50%]
> plinth/modules/kiwix/tests/test_validations.py .                         [ 50%]
> plinth/modules/kiwix/tests/test_views.py ......                          [ 51%]
> plinth/modules/letsencrypt/tests/test_components.py .................... [ 55%]
> .....                                                                    [ 55%]
> plinth/modules/letsencrypt/tests/test_domain_name_changes.py .......     [ 56%]
> plinth/modules/matrixsynapse/tests/test_turn_config.py ....              [ 57%]
> plinth/modules/mediawiki/tests/test_settings.py .....                    [ 58%]
> plinth/modules/names/tests/test_components.py ...........                [ 60%]
> plinth/modules/names/tests/test_names.py ..                              [ 60%]
> plinth/modules/networks/tests/test_privileged.py .                       [ 60%]
> plinth/modules/pagekite/tests/test_pagekite.py .                         [ 60%]
> plinth/modules/samba/tests/test_views.py .s...                           [ 61%]
> plinth/modules/snapshot/tests/test_privileged.py ssss                    [ 62%]
> plinth/modules/sso/tests/test_privileged.py .                            [ 62%]
> plinth/modules/storage/tests/test_storage.py sssssssss..........         [ 65%]
> plinth/modules/tor/tests/test_tor.py s.                                  [ 65%]
> plinth/modules/torproxy/tests/test_torproxy.py ss                        [ 66%]
> plinth/modules/users/tests/test_components.py ...                        [ 66%]
> plinth/modules/users/tests/test_privileged.py sssssssssss                [ 68%]
> plinth/modules/wireguard/tests/test_forms.py ..................          [ 71%]
> plinth/tests/test_action_utils.py .ssss.s                                [ 72%]
> plinth/tests/test_actions.py .....                                       [ 73%]
> plinth/tests/test_actions_actions.py ...                                 [ 73%]
> plinth/tests/test_app.py ....................................            [ 79%]
> plinth/tests/test_cfg.py .......                                         [ 80%]
> plinth/tests/test_clients.py ....                                        [ 81%]
> plinth/tests/test_config.py ......                                       [ 82%]
> plinth/tests/test_context_processors.py ..                               [ 82%]
> plinth/tests/test_custom_shortcuts.py ......                             [ 83%]
> plinth/tests/test_daemon.py ..........                                   [ 85%]
> plinth/tests/test_db.py ...                                              [ 85%]
> plinth/tests/test_frontpage.py .......                                   [ 86%]
> plinth/tests/test_menu.py ......                                         [ 87%]
> plinth/tests/test_middleware.py ..........                               [ 89%]
> plinth/tests/test_module_loader.py .                                     [ 89%]
> plinth/tests/test_network.py sssssssss                                   [ 90%]
> plinth/tests/test_operation.py FF.FF...F.........                        [ 93%]
> plinth/tests/test_package.py ............                                [ 95%]
> plinth/tests/test_templatetags.py .                                      [ 95%]
> plinth/tests/test_utils.py .......                                       [ 96%]
> plinth/tests/test_version.py ....                                        [ 97%]
> plinth/tests/test_views.py ............                                  [ 99%]
> plinth/tests/test_web_server.py ...                                      [100%]
> 
> =================================== FAILURES ===================================
> ____________________ test_operation_default_initialization _____________________
> 
> update_notification = <MagicMock name='_update_notification' id='140540633366752'>
> 
>     @patch('plinth.operation.Operation._update_notification')
>     def test_operation_default_initialization(update_notification):
>         """Test Operation initialization with default values."""
>         target = Mock()
>         operation = Operation('testid', 'testapp', 'op1', target)
>         assert operation.op_id == 'testid'
>         assert operation.app_id == 'testapp'
>         assert operation.name == 'op1'
>         assert operation.show_message
>         assert not operation.show_notification
>         assert operation.target == target
>         assert operation.args == []
>         assert operation.kwargs == {}
>         assert operation.on_complete is None
>         assert operation.state == Operation.State.WAITING
>         assert operation._message is None
>         assert operation.exception is None
>         assert operation.thread_data == {}
>         assert isinstance(operation.thread, threading.Thread)
>         assert operation.thread._operation == operation
> >       assert update_notification.has_calls([call()])
> 
> plinth/tests/test_operation.py:48: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = <MagicMock name='_update_notification' id='140540633366752'>
> name = 'has_calls'
> 
>     def __getattr__(self, name):
>         if name in {'_mock_methods', '_mock_unsafe'}:
>             raise AttributeError(name)
>         elif self._mock_methods is not None:
>             if name not in self._mock_methods or name in _all_magics:
>                 raise AttributeError("Mock object has no attribute %r" % name)
>         elif _is_magic(name):
>             raise AttributeError(name)
>         if not self._mock_unsafe and (not self._mock_methods or name not in self._mock_methods):
>             if name.startswith(('assert', 'assret', 'asert', 'aseert', 'assrt')) or name in _ATTRIB_DENY_LIST:
> >               raise AttributeError(
>                     f"{name!r} is not a valid assertion. Use a spec "
>                     f"for the mock if {name!r} is meant to be an attribute.")
> E               AttributeError: 'has_calls' is not a valid assertion. Use a spec for the mock if 'has_calls' is meant to be an attribute.
> 
> /usr/lib/python3.12/unittest/mock.py:663: AttributeError
> ________________________ test_operation_initialization _________________________
> 
> update_notification = <MagicMock name='_update_notification' id='140540633235728'>
> 
>     @patch('plinth.operation.Operation._update_notification')
>     def test_operation_initialization(update_notification):
>         """Test Operation initialization with explicit values."""
>         on_complete = Mock()
>         operation = Operation('testid', 'testapp', 'op1', Mock(), ['arg1'],
>                               {'arg2': 'value2'}, False, True,
>                               {'data1': 'datavalue1'}, on_complete)
>         assert not operation.show_message
>         assert operation.show_notification
>         assert operation.args == ['arg1']
>         assert operation.kwargs == {'arg2': 'value2'}
>         assert operation.on_complete == on_complete
>         assert operation.state == Operation.State.WAITING
>         assert operation._message is None
>         assert operation.exception is None
>         assert operation.thread_data == {'data1': 'datavalue1'}
> >       assert update_notification.has_calls([call()])
> 
> plinth/tests/test_operation.py:67: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = <MagicMock name='_update_notification' id='140540633235728'>
> name = 'has_calls'
> 
>     def __getattr__(self, name):
>         if name in {'_mock_methods', '_mock_unsafe'}:
>             raise AttributeError(name)
>         elif self._mock_methods is not None:
>             if name not in self._mock_methods or name in _all_magics:
>                 raise AttributeError("Mock object has no attribute %r" % name)
>         elif _is_magic(name):
>             raise AttributeError(name)
>         if not self._mock_unsafe and (not self._mock_methods or name not in self._mock_methods):
>             if name.startswith(('assert', 'assret', 'asert', 'aseert', 'assrt')) or name in _ATTRIB_DENY_LIST:
> >               raise AttributeError(
>                     f"{name!r} is not a valid assertion. Use a spec "
>                     f"for the mock if {name!r} is meant to be an attribute.")
> E               AttributeError: 'has_calls' is not a valid assertion. Use a spec for the mock if 'has_calls' is meant to be an attribute.
> 
> /usr/lib/python3.12/unittest/mock.py:663: AttributeError
> __________________________ test_successful_operation ___________________________
> 
> update_notification = <MagicMock name='_update_notification' id='140540633553120'>
> 
>     @patch('plinth.operation.Operation._update_notification')
>     def test_successful_operation(update_notification):
>         """Test running a operation that succeeds."""
>         target = Mock()
>         target.return_value = 'test-return'
>         on_complete = Mock()
>         operation = Operation('testid', 'testapp', 'op1', target, ['arg1'],
>                               {'arg2': 'value2'}, on_complete=on_complete)
>         operation.run()
>         assert operation.join() == 'test-return'
>         target.assert_has_calls([call('arg1', arg2='value2')])
>         assert operation.state == Operation.State.COMPLETED
>         assert operation.return_value == 'test-return'
>         on_complete.assert_has_calls([call(operation)])
> >       assert update_notification.has_calls([call(), call()])
> 
> plinth/tests/test_operation.py:90: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = <MagicMock name='_update_notification' id='140540633553120'>
> name = 'has_calls'
> 
>     def __getattr__(self, name):
>         if name in {'_mock_methods', '_mock_unsafe'}:
>             raise AttributeError(name)
>         elif self._mock_methods is not None:
>             if name not in self._mock_methods or name in _all_magics:
>                 raise AttributeError("Mock object has no attribute %r" % name)
>         elif _is_magic(name):
>             raise AttributeError(name)
>         if not self._mock_unsafe and (not self._mock_methods or name not in self._mock_methods):
>             if name.startswith(('assert', 'assret', 'asert', 'aseert', 'assrt')) or name in _ATTRIB_DENY_LIST:
> >               raise AttributeError(
>                     f"{name!r} is not a valid assertion. Use a spec "
>                     f"for the mock if {name!r} is meant to be an attribute.")
> E               AttributeError: 'has_calls' is not a valid assertion. Use a spec for the mock if 'has_calls' is meant to be an attribute.
> 
> /usr/lib/python3.12/unittest/mock.py:663: AttributeError
> _____________________________ test_error_operation _____________________________
> 
> update_notification = <MagicMock name='_update_notification' id='140540631605824'>
> 
>     @patch('plinth.operation.Operation._update_notification')
>     def test_error_operation(update_notification):
>         """Test running an operation that fails."""
>         target = Mock()
>         target.side_effect = RuntimeError('error1')
>         on_complete = Mock()
>         operation = Operation('testid', 'testapp', 'op1', target, ['arg1'],
>                               {'arg2': 'value2'}, on_complete=on_complete)
>         operation.run()
>         with pytest.raises(RuntimeError):
>             operation.join()
>     
>         target.assert_has_calls([call('arg1', arg2='value2')])
>         assert operation.state == Operation.State.COMPLETED
>         assert operation.exception == target.side_effect
>         on_complete.assert_has_calls([call(operation)])
> >       assert update_notification.has_calls([call(), call()])
> 
> plinth/tests/test_operation.py:109: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = <MagicMock name='_update_notification' id='140540631605824'>
> name = 'has_calls'
> 
>     def __getattr__(self, name):
>         if name in {'_mock_methods', '_mock_unsafe'}:
>             raise AttributeError(name)
>         elif self._mock_methods is not None:
>             if name not in self._mock_methods or name in _all_magics:
>                 raise AttributeError("Mock object has no attribute %r" % name)
>         elif _is_magic(name):
>             raise AttributeError(name)
>         if not self._mock_unsafe and (not self._mock_methods or name not in self._mock_methods):
>             if name.startswith(('assert', 'assret', 'asert', 'aseert', 'assrt')) or name in _ATTRIB_DENY_LIST:
> >               raise AttributeError(
>                     f"{name!r} is not a valid assertion. Use a spec "
>                     f"for the mock if {name!r} is meant to be an attribute.")
> E               AttributeError: 'has_calls' is not a valid assertion. Use a spec for the mock if 'has_calls' is meant to be an attribute.
> 
> /usr/lib/python3.12/unittest/mock.py:663: AttributeError
> ___________________________ test_updating_operation ____________________________
> 
> update_notification = <MagicMock name='_update_notification' id='140540631597520'>
> 
>     @patch('plinth.operation.Operation._update_notification')
>     def test_updating_operation(update_notification):
>         """Test that operation object can be updated from within the thread."""
>         exception = RuntimeError('error1')
>     
>         def target():
>             operation = Operation.get_operation()
>             operation.on_update('message1', exception)
>     
>         operation = Operation('testid', 'testapp', 'op1', target)
>         operation.run()
>         with pytest.raises(RuntimeError):
>             operation.join()
>     
>         assert operation._message == 'message1'
>         assert operation.exception == exception
> >       assert update_notification.has_calls([call(), call(), call()])
> 
> plinth/tests/test_operation.py:176: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = <MagicMock name='_update_notification' id='140540631597520'>
> name = 'has_calls'
> 
>     def __getattr__(self, name):
>         if name in {'_mock_methods', '_mock_unsafe'}:
>             raise AttributeError(name)
>         elif self._mock_methods is not None:
>             if name not in self._mock_methods or name in _all_magics:
>                 raise AttributeError("Mock object has no attribute %r" % name)
>         elif _is_magic(name):
>             raise AttributeError(name)
>         if not self._mock_unsafe and (not self._mock_methods or name not in self._mock_methods):
>             if name.startswith(('assert', 'assret', 'asert', 'aseert', 'assrt')) or name in _ATTRIB_DENY_LIST:
> >               raise AttributeError(
>                     f"{name!r} is not a valid assertion. Use a spec "
>                     f"for the mock if {name!r} is meant to be an attribute.")
> E               AttributeError: 'has_calls' is not a valid assertion. Use a spec for the mock if 'has_calls' is meant to be an attribute.
> 
> /usr/lib/python3.12/unittest/mock.py:663: AttributeError
> =============================== warnings summary ===============================
> ../../../usr/lib/python3/dist-packages/django/conf/__init__.py:241
>   /usr/lib/python3/dist-packages/django/conf/__init__.py:241: RemovedInDjango50Warning: The default value of USE_TZ will change from False to True in Django 5.0. Set USE_TZ to False in your project settings if you want to keep the current default behavior.
>     warnings.warn(
> 
> ../../../usr/lib/python3/dist-packages/axes/__init__.py:1
>   /usr/lib/python3/dist-packages/axes/__init__.py:1: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
>     from pkg_resources import get_distribution
> 
> ../../../usr/lib/python3/dist-packages/pkg_resources/__init__.py:2871
>   /usr/lib/python3/dist-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('ruamel')`.
>   Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages
>     declare_namespace(pkg)
> 
> ../../../usr/lib/python3/dist-packages/pkg_resources/__init__.py:2871
>   /usr/lib/python3/dist-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('zc')`.
>   Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages
>     declare_namespace(pkg)
> 
> ../../../usr/lib/python3/dist-packages/bootstrapform/meta.py:4
>   /usr/lib/python3/dist-packages/bootstrapform/meta.py:4: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.
>     VERSION = StrictVersion('3.4')
> 
> ../../../usr/lib/python3/dist-packages/gi/overrides/__init__.py:108
> ../../../usr/lib/python3/dist-packages/gi/overrides/__init__.py:108
> ../../../usr/lib/python3/dist-packages/gi/overrides/__init__.py:108
> ../../../usr/lib/python3/dist-packages/gi/overrides/__init__.py:108
>   /usr/lib/python3/dist-packages/gi/overrides/__init__.py:108: DeprecationWarning: 'pkgutil.get_loader' is deprecated and slated for removal in Python 3.14; use importlib.util.find_spec() instead
>     override_loader = get_loader(override_package_name)
> 
> ../../../usr/lib/python3.12/pkgutil.py:291
> ../../../usr/lib/python3.12/pkgutil.py:291
> ../../../usr/lib/python3.12/pkgutil.py:291
> ../../../usr/lib/python3.12/pkgutil.py:291
>   /usr/lib/python3.12/pkgutil.py:291: DeprecationWarning: 'pkgutil.find_loader' is deprecated and slated for removal in Python 3.14; use importlib.util.find_spec() instead
>     return find_loader(fullname)
> 
> ../../../usr/lib/python3/dist-packages/cherrypy/lib/httputil.py:15
>   /usr/lib/python3/dist-packages/cherrypy/lib/httputil.py:15: DeprecationWarning: 'cgi' is deprecated and slated for removal in Python 3.13
>     from cgi import parse_header
> 
> -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
> =========================== short test summary info ============================
> FAILED plinth/tests/test_operation.py::test_operation_default_initialization
> FAILED plinth/tests/test_operation.py::test_operation_initialization - Attrib...
> FAILED plinth/tests/test_operation.py::test_successful_operation - AttributeE...
> FAILED plinth/tests/test_operation.py::test_error_operation - AttributeError:...
> FAILED plinth/tests/test_operation.py::test_updating_operation - AttributeErr...
> =========== 5 failed, 557 passed, 61 skipped, 14 warnings in 36.05s ============
> E: pybuild pybuild:395: test: plugin custom failed with: exit code=1: python3.12 -m pytest
> I: pybuild base:310: python3.11 -m pytest
> ============================= test session starts ==============================
> platform linux -- Python 3.11.7, pytest-7.4.3, pluggy-1.3.0
> django: settings: plinth.tests.data.django_test_settings (from option)
> rootdir: /<<PKGBUILDDIR>>
> configfile: pyproject.toml
> plugins: cov-4.1.0, django-4.5.2
> collected 623 items
> 
> plinth/modules/backups/tests/test_api.py ...........                     [  1%]
> plinth/modules/backups/tests/test_components.py ..                       [  2%]
> plinth/modules/backups/tests/test_ssh_remotes.py ssss                    [  2%]
> plinth/modules/backups/tests/test_store.py ....                          [  3%]
> plinth/modules/users/tests/test_views.py ........................        [  7%]
> plinth/tests/test_app.py ...                                             [  7%]
> plinth/tests/test_kvstore.py ....                                        [  8%]
> plinth/tests/test_middleware.py ..                                       [  8%]
> plinth/tests/test_notification.py ...................................... [ 14%]
> ....................                                                     [ 17%]
> plinth/tests/test_operation.py .                                         [ 18%]
> plinth/modules/apache/tests/test_components.py .............             [ 20%]
> plinth/modules/apache/tests/test_uws.py .                                [ 20%]
> plinth/modules/backups/tests/test_backups.py sssssssss                   [ 21%]
> plinth/modules/backups/tests/test_components.py ........................ [ 25%]
> .....................                                                    [ 29%]
> plinth/modules/backups/tests/test_schedule.py .......................... [ 33%]
> ...                                                                      [ 33%]
> plinth/modules/backups/tests/test_validators.py .....                    [ 34%]
> plinth/modules/bind/tests/test_bind.py ..                                [ 34%]
> plinth/modules/calibre/tests/test_privileged.py ...                      [ 35%]
> plinth/modules/calibre/tests/test_views.py ........                      [ 36%]
> plinth/modules/config/tests/test_config.py ...ss.                        [ 37%]
> plinth/modules/coturn/tests/test_components.py .......                   [ 38%]
> plinth/modules/deluge/tests/test_utils.py ...                            [ 39%]
> plinth/modules/diagnostics/tests/test_check.py ..                        [ 39%]
> plinth/modules/ejabberd/tests/test_turn_config.py ...                    [ 39%]
> plinth/modules/firewall/tests/test_components.py ..........              [ 41%]
> plinth/modules/gitweb/tests/test_privileged.py ..............            [ 43%]
> plinth/modules/gitweb/tests/test_views.py .................              [ 46%]
> plinth/modules/help/tests/test_views.py .........sss.s                   [ 48%]
> plinth/modules/i2p/tests/test_helpers.py .....                           [ 49%]
> plinth/modules/i2p/tests/test_router_editor.py ....                      [ 50%]
> plinth/modules/kiwix/tests/test_privileged.py ...                        [ 50%]
> plinth/modules/kiwix/tests/test_validations.py .                         [ 50%]
> plinth/modules/kiwix/tests/test_views.py ......                          [ 51%]
> plinth/modules/letsencrypt/tests/test_components.py .................... [ 55%]
> .....                                                                    [ 55%]
> plinth/modules/letsencrypt/tests/test_domain_name_changes.py .......     [ 56%]
> plinth/modules/matrixsynapse/tests/test_turn_config.py ....              [ 57%]
> plinth/modules/mediawiki/tests/test_settings.py .....                    [ 58%]
> plinth/modules/names/tests/test_components.py ...........                [ 60%]
> plinth/modules/names/tests/test_names.py ..                              [ 60%]
> plinth/modules/networks/tests/test_privileged.py .                       [ 60%]
> plinth/modules/pagekite/tests/test_pagekite.py .                         [ 60%]
> plinth/modules/samba/tests/test_views.py .s...                           [ 61%]
> plinth/modules/snapshot/tests/test_privileged.py ssss                    [ 62%]
> plinth/modules/sso/tests/test_privileged.py .                            [ 62%]
> plinth/modules/storage/tests/test_storage.py sssssssss..........         [ 65%]
> plinth/modules/tor/tests/test_tor.py s.                                  [ 65%]
> plinth/modules/torproxy/tests/test_torproxy.py ss                        [ 66%]
> plinth/modules/users/tests/test_components.py ...                        [ 66%]
> plinth/modules/users/tests/test_privileged.py sssssssssss                [ 68%]
> plinth/modules/wireguard/tests/test_forms.py ..................          [ 71%]
> plinth/tests/test_action_utils.py .ssss.s                                [ 72%]
> plinth/tests/test_actions.py .....                                       [ 73%]
> plinth/tests/test_actions_actions.py ...                                 [ 73%]
> plinth/tests/test_app.py ....................................            [ 79%]
> plinth/tests/test_cfg.py .......                                         [ 80%]
> plinth/tests/test_clients.py ....                                        [ 81%]
> plinth/tests/test_config.py ......                                       [ 82%]
> plinth/tests/test_context_processors.py ..                               [ 82%]
> plinth/tests/test_custom_shortcuts.py ......                             [ 83%]
> plinth/tests/test_daemon.py ..........                                   [ 85%]
> plinth/tests/test_db.py ...                                              [ 85%]
> plinth/tests/test_frontpage.py .......                                   [ 86%]
> plinth/tests/test_menu.py ......                                         [ 87%]
> plinth/tests/test_middleware.py ..........                               [ 89%]
> plinth/tests/test_module_loader.py .                                     [ 89%]
> plinth/tests/test_network.py sssssssss                                   [ 90%]
> plinth/tests/test_operation.py ..................                        [ 93%]
> plinth/tests/test_package.py ............                                [ 95%]
> plinth/tests/test_templatetags.py .                                      [ 95%]
> plinth/tests/test_utils.py .......                                       [ 96%]
> plinth/tests/test_version.py ....                                        [ 97%]
> plinth/tests/test_views.py ............                                  [ 99%]
> plinth/tests/test_web_server.py ...                                      [100%]
> 
> =============================== warnings summary ===============================
> ../../../usr/lib/python3/dist-packages/django/conf/__init__.py:241
>   /usr/lib/python3/dist-packages/django/conf/__init__.py:241: RemovedInDjango50Warning: The default value of USE_TZ will change from False to True in Django 5.0. Set USE_TZ to False in your project settings if you want to keep the current default behavior.
>     warnings.warn(
> 
> ../../../usr/lib/python3/dist-packages/axes/__init__.py:1
>   /usr/lib/python3/dist-packages/axes/__init__.py:1: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
>     from pkg_resources import get_distribution
> 
> ../../../usr/lib/python3/dist-packages/pkg_resources/__init__.py:2871
>   /usr/lib/python3/dist-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('ruamel')`.
>   Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages
>     declare_namespace(pkg)
> 
> ../../../usr/lib/python3/dist-packages/pkg_resources/__init__.py:2871
>   /usr/lib/python3/dist-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('zc')`.
>   Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages
>     declare_namespace(pkg)
> 
> ../../../usr/lib/python3/dist-packages/bootstrapform/meta.py:4
>   /usr/lib/python3/dist-packages/bootstrapform/meta.py:4: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.
>     VERSION = StrictVersion('3.4')
> 
> ../../../usr/lib/python3/dist-packages/cherrypy/lib/httputil.py:15
>   /usr/lib/python3/dist-packages/cherrypy/lib/httputil.py:15: DeprecationWarning: 'cgi' is deprecated and slated for removal in Python 3.13
>     from cgi import parse_header
> 
> -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
> ================= 562 passed, 61 skipped, 6 warnings in 35.27s =================
> 	rm -fr -- /tmp/dh-xdg-rundir-tOBcRSu8
> dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p "3.12 3.11" returned exit code 13


The full build log is available from:
http://qa-logs.debian.net/2023/12/12/freedombox_23.21_unstable.log

All bugs filed during this archive rebuild are listed at:
https://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=ftbfs-20231212;users=lucas@debian.org
or:
https://udd.debian.org/bugs/?release=na&merged=ign&fnewerval=7&flastmodval=7&fusertag=only&fusertagtag=ftbfs-20231212&fusertaguser=lucas@debian.org&allbugs=1&cseverity=1&ctags=1&caffected=1#results

A list of current common problems and possible solutions is available at
http://wiki.debian.org/qa.debian.org/FTBFS . You're welcome to contribute!

If you reassign this bug to another package, please mark it as 'affects'-ing
this package. See https://www.debian.org/Bugs/server-control#affects

If you fail to reproduce this, please provide a build log and diff it with mine
so that we can identify if something relevant changed in the meantime.



More information about the Freedombox-pkg-team mailing list