--- Begin Message ---
Source: borgmatic
Version: 1.5.12-1
Severity: serious
Justification: FTBFS on amd64
Tags: bullseye sid ftbfs
Usertags: ftbfs-20210120 ftbfs-bullseye
Hi,
During a rebuild of all packages in sid, your package failed to build
on amd64.
Relevant part (hopefully):
> make[1]: Entering directory '/<<PKGBUILDDIR>>'
> dh_clean
> rm -rf borgmatic.egg-info
> for man in borgmatic generate-borgmatic-config upgrade-borgmatic-config
> validate-borgmatic-config ; do \
> [ ! -f debian/$man.1 ] || rm debian/$man.1 ; \
> done
> make[1]: Leaving directory '/<<PKGBUILDDIR>>'
> dpkg-source -b .
> dpkg-source: info: using source format '3.0 (quilt)'
> dpkg-source: info: building borgmatic using existing
> ./borgmatic_1.5.12.orig.tar.gz
> dpkg-source: info: using patch list from debian/patches/series
> dpkg-source: info: building borgmatic in borgmatic_1.5.12-1.debian.tar.xz
> dpkg-source: info: building borgmatic in borgmatic_1.5.12-1.dsc
> 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
> I: pybuild base:232: python3.9 setup.py config
> running config
> dh_auto_build -O--buildsystem=pybuild
> I: pybuild base:232: /usr/bin/python3 setup.py build
> running build
> running build_py
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/borgmatic
> copying borgmatic/execute.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/borgmatic
> copying borgmatic/__init__.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/borgmatic
> copying borgmatic/verbosity.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/borgmatic
> copying borgmatic/logger.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/borgmatic
> copying borgmatic/signals.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/borgmatic
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/borgmatic/hooks
> copying borgmatic/hooks/healthchecks.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/borgmatic/hooks
> copying borgmatic/hooks/__init__.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/borgmatic/hooks
> copying borgmatic/hooks/cronitor.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/borgmatic/hooks
> copying borgmatic/hooks/command.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/borgmatic/hooks
> copying borgmatic/hooks/dispatch.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/borgmatic/hooks
> copying borgmatic/hooks/postgresql.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/borgmatic/hooks
> copying borgmatic/hooks/monitor.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/borgmatic/hooks
> copying borgmatic/hooks/cronhub.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/borgmatic/hooks
> copying borgmatic/hooks/mysql.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/borgmatic/hooks
> copying borgmatic/hooks/pagerduty.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/borgmatic/hooks
> copying borgmatic/hooks/dump.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/borgmatic/hooks
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/borgmatic/config
> copying borgmatic/config/validate.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/borgmatic/config
> copying borgmatic/config/convert.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/borgmatic/config
> copying borgmatic/config/__init__.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/borgmatic/config
> copying borgmatic/config/override.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/borgmatic/config
> copying borgmatic/config/load.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/borgmatic/config
> copying borgmatic/config/legacy.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/borgmatic/config
> copying borgmatic/config/normalize.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/borgmatic/config
> copying borgmatic/config/collect.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/borgmatic/config
> copying borgmatic/config/generate.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/borgmatic/config
> copying borgmatic/config/checks.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/borgmatic/config
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/borgmatic/commands
> copying borgmatic/commands/__init__.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/borgmatic/commands
> copying borgmatic/commands/borgmatic.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/borgmatic/commands
> copying borgmatic/commands/generate_config.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/borgmatic/commands
> copying borgmatic/commands/arguments.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/borgmatic/commands
> copying borgmatic/commands/validate_config.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/borgmatic/commands
> copying borgmatic/commands/convert_config.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/borgmatic/commands
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/borgmatic/borg
> copying borgmatic/borg/prune.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/borgmatic/borg
> copying borgmatic/borg/umount.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/borgmatic/borg
> copying borgmatic/borg/mount.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/borgmatic/borg
> copying borgmatic/borg/__init__.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/borgmatic/borg
> copying borgmatic/borg/flags.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/borgmatic/borg
> copying borgmatic/borg/environment.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/borgmatic/borg
> copying borgmatic/borg/check.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/borgmatic/borg
> copying borgmatic/borg/create.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/borgmatic/borg
> copying borgmatic/borg/list.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/borgmatic/borg
> copying borgmatic/borg/info.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/borgmatic/borg
> copying borgmatic/borg/init.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/borgmatic/borg
> copying borgmatic/borg/export_tar.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/borgmatic/borg
> copying borgmatic/borg/extract.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/borgmatic/borg
> running egg_info
> creating borgmatic.egg-info
> writing borgmatic.egg-info/PKG-INFO
> writing dependency_links to borgmatic.egg-info/dependency_links.txt
> writing entry points to borgmatic.egg-info/entry_points.txt
> writing requirements to borgmatic.egg-info/requires.txt
> writing top-level names to borgmatic.egg-info/top_level.txt
> writing manifest file 'borgmatic.egg-info/SOURCES.txt'
> reading manifest file 'borgmatic.egg-info/SOURCES.txt'
> reading manifest template 'MANIFEST.in'
> writing manifest file 'borgmatic.egg-info/SOURCES.txt'
> copying borgmatic/config/schema.yaml ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/borgmatic/config
> dh_auto_test -O--buildsystem=pybuild
> I: pybuild base:232: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build;
> python3.9 -m pytest --ignore=tests/end-to-end --ignore=tests/integration
> ============================= test session starts
> ==============================
> platform linux -- Python 3.9.1+, pytest-6.0.2, py-1.10.0, pluggy-0.13.0
> rootdir: /<<PKGBUILDDIR>>, configfile: setup.cfg
> collected 540 items
>
> tests/unit/test_execute.py ..................................... [
> 6%]
> tests/unit/test_logger.py ...................................... [
> 13%]
> tests/unit/test_verbosity.py .. [
> 14%]
> tests/unit/borg/test_check.py ...................................... [
> 21%]
> tests/unit/borg/test_create.py ......................................... [
> 28%]
> .............................................. [
> 37%]
> tests/unit/borg/test_environment.py ....... [
> 38%]
> tests/unit/borg/test_export_tar.py ............. [
> 41%]
> tests/unit/borg/test_extract.py ..................... [
> 45%]
> tests/unit/borg/test_flags.py ........ [
> 46%]
> tests/unit/borg/test_info.py ............... [
> 49%]
> tests/unit/borg/test_init.py ........... [
> 51%]
> tests/unit/borg/test_list.py .............................. [
> 56%]
> tests/unit/borg/test_mount.py ......... [
> 58%]
> tests/unit/borg/test_prune.py ................. [
> 61%]
> tests/unit/borg/test_umount.py ... [
> 62%]
> tests/unit/commands/test_arguments.py ........ [
> 63%]
> tests/unit/commands/test_borgmatic.py .................................. [
> 70%]
> ....F [
> 70%]
> tests/unit/config/test_checks.py ... [
> 71%]
> tests/unit/config/test_collect.py ............ [
> 73%]
> tests/unit/config/test_convert.py ....... [
> 75%]
> tests/unit/config/test_generate.py ......... [
> 76%]
> tests/unit/config/test_legacy.py ............. [
> 79%]
> tests/unit/config/test_normalize.py .... [
> 79%]
> tests/unit/config/test_override.py .......... [
> 81%]
> tests/unit/config/test_validate.py .................. [
> 85%]
> tests/unit/hooks/test_command.py ............ [
> 87%]
> tests/unit/hooks/test_cronhub.py ..... [
> 88%]
> tests/unit/hooks/test_cronitor.py .... [
> 88%]
> tests/unit/hooks/test_dispatch.py ...... [
> 90%]
> tests/unit/hooks/test_dump.py ........... [
> 92%]
> tests/unit/hooks/test_healthchecks.py ..FFF..... [
> 93%]
> tests/unit/hooks/test_mysql.py .............. [
> 96%]
> tests/unit/hooks/test_pagerduty.py .... [
> 97%]
> tests/unit/hooks/test_postgresql.py ...............
> [100%]
>
> =================================== FAILURES
> ===================================
> ___ test_collect_configuration_run_summary_logs_outputs_merged_json_results
> ____
>
> def
> test_collect_configuration_run_summary_logs_outputs_merged_json_results():
>
> flexmock(module).should_receive('run_configuration').and_return(['foo',
> 'bar']).and_return(
> ['baz']
> )
> >
> > flexmock(module.sys.stdout).should_receive('write').with_args('["foo",
> > "bar", "baz"]').once()
>
> tests/unit/commands/test_borgmatic.py:450:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
> /usr/lib/python3/dist-packages/flexmock.py:391: in with_args
> self._verify_signature_match(*kargs, **kwargs)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
>
> self = <flexmock.Expectation object at 0x7f3ff2c18160>
> kargs = ('["foo", "bar", "baz"]',), kwargs = {}, is_method = False, args_len
> = 2
> minimum = 2, maximum = 2, total_positional = 1, named_optionals = []
>
> def _verify_signature_match(self, *kargs, **kwargs):
> if isinstance(self._mock, Mock):
> return # no sense in enforcing this for fake objects
> allowed = self.argspec
> # we consider object a method for purposes or not counting
> "self"/"cls" as argument if:
> # - one of inspect.ismethod, inspect.isfunction, _isclass return True
> # (in Python 3 it's sometimes impossible to tell whether callable
> is method or not,
> # so we try both inspect.ismethod and inspect.isfunction; classes
> are callable too -
> # they have __init__)
> # - it's not a static method
> # - the mocked object is a module - module "methods" are in fact
> plain functions;
> # unless they're classes, which means they still have __init__
> is_method = ((inspect.ismethod(self.original) or
> inspect.isfunction(self.original)
> or _isclass(self.original)) and
> self.method_type is not staticmethod and
> (not isinstance(self._mock, types.ModuleType) or
> _isclass(self.original)))
> args_len = len(allowed.args)
> if is_method:
> args_len -= 1
> minimum = args_len - (allowed.defaults and len(allowed.defaults) or 0)
> maximum = None
> if allowed.varargs is None and allowed.keywords is None:
> maximum = args_len
> total_positional = len(
> kargs + tuple(a for a in kwargs if a in allowed.args))
> named_optionals = [a for a in kwargs
> if allowed.defaults
> if a in allowed.args[len(allowed.args) -
> len(allowed.defaults):]]
> if allowed.defaults and total_positional == minimum and
> named_optionals:
> minimum += len(named_optionals)
> if total_positional < minimum:
> > raise MethodSignatureError(
> '%s requires at least %s arguments, expectation provided %s' %
> (self.name, minimum, total_positional))
> E flexmock.MethodSignatureError: write requires at least 2
> arguments, expectation provided 1
>
> /usr/lib/python3/dist-packages/flexmock.py:278: MethodSignatureError
> __________ test_format_buffered_logs_for_payload_flattens_log_buffer
> ___________
>
> self = <_pytest.logging.LoggingPlugin object at 0x7f3ff3aa7970>
> item = <Function test_format_buffered_logs_for_payload_flattens_log_buffer>
> when = 'call'
>
> def _runtest_for(self, item: nodes.Item, when: str) -> Generator[None,
> None, None]:
> """Implements the internals of pytest_runtest_xxx() hook."""
> with catching_logs(
> self.caplog_handler, level=self.log_level,
> ) as caplog_handler, catching_logs(
> self.report_handler, level=self.log_level,
> ) as report_handler:
> caplog_handler.reset()
> report_handler.reset()
> item._store[caplog_records_key][when] = caplog_handler.records
> item._store[caplog_handler_key] = caplog_handler
>
> yield
>
> log = report_handler.stream.getvalue().strip()
> > item.add_report_section(when, "log", log)
>
> /usr/lib/python3/dist-packages/_pytest/logging.py:694:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
>
> self = <_pytest.logging.catching_logs object at 0x7f3ff2a01040>, type = None
> value = None, traceback = None
>
> def __exit__(self, type, value, traceback):
> root_logger = logging.getLogger()
> if self.level is not None:
> root_logger.setLevel(self.orig_level)
> > root_logger.removeHandler(self.handler)
> E AttributeError: 'MockClass' object has no attribute 'removeHandler'
>
> /usr/lib/python3/dist-packages/_pytest/logging.py:310: AttributeError
>
> During handling of the above exception, another exception occurred:
>
> cls = <class '_pytest.runner.CallInfo'>
> func = <function call_runtest_hook.<locals>.<lambda> at 0x7f3ff293e8b0>
> when = 'call'
> reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
>
> @classmethod
> def from_call(
> cls,
> func: "Callable[[], _T]",
> when: "Literal['collect', 'setup', 'call', 'teardown']",
> reraise: "Optional[Union[Type[BaseException],
> Tuple[Type[BaseException], ...]]]" = None,
> ) -> "CallInfo[_T]":
> excinfo = None
> start = timing.time()
> precise_start = timing.perf_counter()
> try:
> > result = func() # type: Optional[_T]
>
> /usr/lib/python3/dist-packages/_pytest/runner.py:294:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
> /usr/lib/python3/dist-packages/_pytest/runner.py:247: in <lambda>
> lambda: ihook(item=item, **kwds), when=when, reraise=reraise
> /usr/lib/python3/dist-packages/pluggy/hooks.py:286: in __call__
> return self._hookexec(self, self.get_hookimpls(), kwargs)
> /usr/lib/python3/dist-packages/pluggy/manager.py:92: in _hookexec
> return self._inner_hookexec(hook, methods, kwargs)
> /usr/lib/python3/dist-packages/pluggy/manager.py:83: in <lambda>
> self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall(
> /usr/lib/python3/dist-packages/_pytest/logging.py:708: in pytest_runtest_call
> yield from self._runtest_for(item, "call")
> /usr/lib/python3/dist-packages/_pytest/logging.py:694: in _runtest_for
> item.add_report_section(when, "log", log)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
>
> self = <_pytest.logging.catching_logs object at 0x7f3ff29f68c0>
> type = <class 'AttributeError'>
> value = AttributeError("'MockClass' object has no attribute 'removeHandler'")
> traceback = <traceback object at 0x7f3ff2a011c0>
>
> def __exit__(self, type, value, traceback):
> root_logger = logging.getLogger()
> if self.level is not None:
> root_logger.setLevel(self.orig_level)
> > root_logger.removeHandler(self.handler)
> E AttributeError: 'MockClass' object has no attribute 'removeHandler'
>
> /usr/lib/python3/dist-packages/_pytest/logging.py:310: AttributeError
> _
> test_format_buffered_logs_for_payload_inserts_truncation_indicator_when_logs_forgotten
> _
>
> self = <_pytest.logging.LoggingPlugin object at 0x7f3ff3aa7970>
> item = <Function
> test_format_buffered_logs_for_payload_inserts_truncation_indicator_when_logs_forgotten>
> when = 'call'
>
> def _runtest_for(self, item: nodes.Item, when: str) -> Generator[None,
> None, None]:
> """Implements the internals of pytest_runtest_xxx() hook."""
> with catching_logs(
> self.caplog_handler, level=self.log_level,
> ) as caplog_handler, catching_logs(
> self.report_handler, level=self.log_level,
> ) as report_handler:
> caplog_handler.reset()
> report_handler.reset()
> item._store[caplog_records_key][when] = caplog_handler.records
> item._store[caplog_handler_key] = caplog_handler
>
> yield
>
> log = report_handler.stream.getvalue().strip()
> > item.add_report_section(when, "log", log)
>
> /usr/lib/python3/dist-packages/_pytest/logging.py:694:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
>
> self = <_pytest.logging.catching_logs object at 0x7f3ff2b0de40>, type = None
> value = None, traceback = None
>
> def __exit__(self, type, value, traceback):
> root_logger = logging.getLogger()
> if self.level is not None:
> root_logger.setLevel(self.orig_level)
> > root_logger.removeHandler(self.handler)
> E AttributeError: 'MockClass' object has no attribute 'removeHandler'
>
> /usr/lib/python3/dist-packages/_pytest/logging.py:310: AttributeError
>
> During handling of the above exception, another exception occurred:
>
> cls = <class '_pytest.runner.CallInfo'>
> func = <function call_runtest_hook.<locals>.<lambda> at 0x7f3ff293ec10>
> when = 'call'
> reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
>
> @classmethod
> def from_call(
> cls,
> func: "Callable[[], _T]",
> when: "Literal['collect', 'setup', 'call', 'teardown']",
> reraise: "Optional[Union[Type[BaseException],
> Tuple[Type[BaseException], ...]]]" = None,
> ) -> "CallInfo[_T]":
> excinfo = None
> start = timing.time()
> precise_start = timing.perf_counter()
> try:
> > result = func() # type: Optional[_T]
>
> /usr/lib/python3/dist-packages/_pytest/runner.py:294:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
> /usr/lib/python3/dist-packages/_pytest/runner.py:247: in <lambda>
> lambda: ihook(item=item, **kwds), when=when, reraise=reraise
> /usr/lib/python3/dist-packages/pluggy/hooks.py:286: in __call__
> return self._hookexec(self, self.get_hookimpls(), kwargs)
> /usr/lib/python3/dist-packages/pluggy/manager.py:92: in _hookexec
> return self._inner_hookexec(hook, methods, kwargs)
> /usr/lib/python3/dist-packages/pluggy/manager.py:83: in <lambda>
> self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall(
> /usr/lib/python3/dist-packages/_pytest/logging.py:708: in pytest_runtest_call
> yield from self._runtest_for(item, "call")
> /usr/lib/python3/dist-packages/_pytest/logging.py:694: in _runtest_for
> item.add_report_section(when, "log", log)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
>
> self = <_pytest.logging.catching_logs object at 0x7f3ff2b0dec0>
> type = <class 'AttributeError'>
> value = AttributeError("'MockClass' object has no attribute 'removeHandler'")
> traceback = <traceback object at 0x7f3ff2921a80>
>
> def __exit__(self, type, value, traceback):
> root_logger = logging.getLogger()
> if self.level is not None:
> root_logger.setLevel(self.orig_level)
> > root_logger.removeHandler(self.handler)
> E AttributeError: 'MockClass' object has no attribute 'removeHandler'
>
> /usr/lib/python3/dist-packages/_pytest/logging.py:310: AttributeError
> _
> test_format_buffered_logs_for_payload_without_handler_produces_empty_payload _
>
> self = <_pytest.logging.LoggingPlugin object at 0x7f3ff3aa7970>
> item = <Function
> test_format_buffered_logs_for_payload_without_handler_produces_empty_payload>
> when = 'call'
>
> def _runtest_for(self, item: nodes.Item, when: str) -> Generator[None,
> None, None]:
> """Implements the internals of pytest_runtest_xxx() hook."""
> with catching_logs(
> self.caplog_handler, level=self.log_level,
> ) as caplog_handler, catching_logs(
> self.report_handler, level=self.log_level,
> ) as report_handler:
> caplog_handler.reset()
> report_handler.reset()
> item._store[caplog_records_key][when] = caplog_handler.records
> item._store[caplog_handler_key] = caplog_handler
>
> yield
>
> log = report_handler.stream.getvalue().strip()
> > item.add_report_section(when, "log", log)
>
> /usr/lib/python3/dist-packages/_pytest/logging.py:694:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
>
> self = <_pytest.logging.catching_logs object at 0x7f3ff2b063c0>, type = None
> value = None, traceback = None
>
> def __exit__(self, type, value, traceback):
> root_logger = logging.getLogger()
> if self.level is not None:
> root_logger.setLevel(self.orig_level)
> > root_logger.removeHandler(self.handler)
> E AttributeError: 'MockClass' object has no attribute 'removeHandler'
>
> /usr/lib/python3/dist-packages/_pytest/logging.py:310: AttributeError
>
> During handling of the above exception, another exception occurred:
>
> cls = <class '_pytest.runner.CallInfo'>
> func = <function call_runtest_hook.<locals>.<lambda> at 0x7f3ff293e820>
> when = 'call'
> reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
>
> @classmethod
> def from_call(
> cls,
> func: "Callable[[], _T]",
> when: "Literal['collect', 'setup', 'call', 'teardown']",
> reraise: "Optional[Union[Type[BaseException],
> Tuple[Type[BaseException], ...]]]" = None,
> ) -> "CallInfo[_T]":
> excinfo = None
> start = timing.time()
> precise_start = timing.perf_counter()
> try:
> > result = func() # type: Optional[_T]
>
> /usr/lib/python3/dist-packages/_pytest/runner.py:294:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
> /usr/lib/python3/dist-packages/_pytest/runner.py:247: in <lambda>
> lambda: ihook(item=item, **kwds), when=when, reraise=reraise
> /usr/lib/python3/dist-packages/pluggy/hooks.py:286: in __call__
> return self._hookexec(self, self.get_hookimpls(), kwargs)
> /usr/lib/python3/dist-packages/pluggy/manager.py:92: in _hookexec
> return self._inner_hookexec(hook, methods, kwargs)
> /usr/lib/python3/dist-packages/pluggy/manager.py:83: in <lambda>
> self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall(
> /usr/lib/python3/dist-packages/_pytest/logging.py:708: in pytest_runtest_call
> yield from self._runtest_for(item, "call")
> /usr/lib/python3/dist-packages/_pytest/logging.py:694: in _runtest_for
> item.add_report_section(when, "log", log)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
>
> self = <_pytest.logging.catching_logs object at 0x7f3ff2b06600>
> type = <class 'AttributeError'>
> value = AttributeError("'MockClass' object has no attribute 'removeHandler'")
> traceback = <traceback object at 0x7f3ff29bbe00>
>
> def __exit__(self, type, value, traceback):
> root_logger = logging.getLogger()
> if self.level is not None:
> root_logger.setLevel(self.orig_level)
> > root_logger.removeHandler(self.handler)
> E AttributeError: 'MockClass' object has no attribute 'removeHandler'
>
> /usr/lib/python3/dist-packages/_pytest/logging.py:310: AttributeError
> =========================== short test summary info
> ============================
> FAILED
> tests/unit/commands/test_borgmatic.py::test_collect_configuration_run_summary_logs_outputs_merged_json_results
> FAILED
> tests/unit/hooks/test_healthchecks.py::test_format_buffered_logs_for_payload_flattens_log_buffer
> FAILED
> tests/unit/hooks/test_healthchecks.py::test_format_buffered_logs_for_payload_inserts_truncation_indicator_when_logs_forgotten
> FAILED
> tests/unit/hooks/test_healthchecks.py::test_format_buffered_logs_for_payload_without_handler_produces_empty_payload
> ======================== 4 failed, 536 passed in 1.22s
> =========================
> E: pybuild pybuild:353: test: plugin distutils failed with: exit code=1: cd
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build; python3.9 -m pytest
> --ignore=tests/end-to-end --ignore=tests/integration
> dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.9
> returned exit code 13
The full build log is available from:
http://qa-logs.debian.net/2021/01/20/borgmatic_1.5.12-1_unstable.log
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 marking 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 me
so that we can identify if something relevant changed in the meantime.
About the archive rebuild: The rebuild was done on EC2 VM instances from
Amazon Web Services, using a clean, minimal and up-to-date chroot. Every
failed build was retried once to eliminate random failures.
--- End Message ---