[Python-modules-team] Bug#963369: python-testfixtures: FTBFS: dh_auto_test: error: pybuild --test -i python{version} -p 3.8 returned exit code 13

Lucas Nussbaum lucas at debian.org
Sun Jun 21 21:11:11 BST 2020


Source: python-testfixtures
Version: 6.10.1-1
Severity: serious
Justification: FTBFS on amd64
Tags: bullseye sid ftbfs
Usertags: ftbfs-20200620 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_auto_build
> I: pybuild base:217: /usr/bin/python3 setup.py build 
> running build
> running build_py
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build/testfixtures
> copying testfixtures/mock.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build/testfixtures
> copying testfixtures/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build/testfixtures
> copying testfixtures/logcapture.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build/testfixtures
> copying testfixtures/twisted.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build/testfixtures
> copying testfixtures/django.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build/testfixtures
> copying testfixtures/tdatetime.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build/testfixtures
> copying testfixtures/popen.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build/testfixtures
> copying testfixtures/compat.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build/testfixtures
> copying testfixtures/shouldwarn.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build/testfixtures
> copying testfixtures/outputcapture.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build/testfixtures
> copying testfixtures/tempdirectory.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build/testfixtures
> copying testfixtures/rmtree.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build/testfixtures
> copying testfixtures/shouldraise.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build/testfixtures
> copying testfixtures/resolve.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build/testfixtures
> copying testfixtures/comparison.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build/testfixtures
> copying testfixtures/components.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build/testfixtures
> copying testfixtures/utils.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build/testfixtures
> copying testfixtures/replace.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build/testfixtures
> copying testfixtures/sybil.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build/testfixtures
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build/testfixtures/tests
> copying testfixtures/tests/test_popen_docs.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build/testfixtures/tests
> copying testfixtures/tests/test_replacer.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build/testfixtures/tests
> copying testfixtures/tests/sample1.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build/testfixtures/tests
> copying testfixtures/tests/test_components.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build/testfixtures/tests
> copying testfixtures/tests/test_should_raise.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build/testfixtures/tests
> copying testfixtures/tests/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build/testfixtures/tests
> copying testfixtures/tests/test_comparison.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build/testfixtures/tests
> copying testfixtures/tests/test_outputcapture.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build/testfixtures/tests
> copying testfixtures/tests/sample2.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build/testfixtures/tests
> copying testfixtures/tests/test_shouldwarn.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build/testfixtures/tests
> copying testfixtures/tests/test_logcapture.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build/testfixtures/tests
> copying testfixtures/tests/test_diff.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build/testfixtures/tests
> copying testfixtures/tests/test_log_capture.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build/testfixtures/tests
> copying testfixtures/tests/test_generator.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build/testfixtures/tests
> copying testfixtures/tests/test_wrap.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build/testfixtures/tests
> copying testfixtures/tests/test_time.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build/testfixtures/tests
> copying testfixtures/tests/test_mock.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build/testfixtures/tests
> copying testfixtures/tests/conftest.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build/testfixtures/tests
> copying testfixtures/tests/test_twisted.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build/testfixtures/tests
> copying testfixtures/tests/test_tempdir.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build/testfixtures/tests
> copying testfixtures/tests/test_stringcomparison.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build/testfixtures/tests
> copying testfixtures/tests/test_popen.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build/testfixtures/tests
> copying testfixtures/tests/test_replace.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build/testfixtures/tests
> copying testfixtures/tests/test_roundcomparison.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build/testfixtures/tests
> copying testfixtures/tests/test_compare.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build/testfixtures/tests
> copying testfixtures/tests/test_rangecomparison.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build/testfixtures/tests
> copying testfixtures/tests/test_tempdirectory.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build/testfixtures/tests
> copying testfixtures/tests/test_datetime.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build/testfixtures/tests
> copying testfixtures/tests/test_sybil.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build/testfixtures/tests
> copying testfixtures/tests/test_date.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build/testfixtures/tests
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build/testfixtures/tests/test_django
> copying testfixtures/tests/test_django/test_shouldraise.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build/testfixtures/tests/test_django
> copying testfixtures/tests/test_django/models.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build/testfixtures/tests/test_django
> copying testfixtures/tests/test_django/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build/testfixtures/tests/test_django
> copying testfixtures/tests/test_django/manage.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build/testfixtures/tests/test_django
> copying testfixtures/tests/test_django/settings.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build/testfixtures/tests/test_django
> copying testfixtures/tests/test_django/test_compare.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build/testfixtures/tests/test_django
> running egg_info
> creating testfixtures.egg-info
> writing testfixtures.egg-info/PKG-INFO
> writing dependency_links to testfixtures.egg-info/dependency_links.txt
> writing requirements to testfixtures.egg-info/requires.txt
> writing top-level names to testfixtures.egg-info/top_level.txt
> writing manifest file 'testfixtures.egg-info/SOURCES.txt'
> reading manifest file 'testfixtures.egg-info/SOURCES.txt'
> writing manifest file 'testfixtures.egg-info/SOURCES.txt'
> PYTHONPATH=. python3 -m sphinx -b html -d docs/.build/.doctrees -N docs docs/.build/html
> Running Sphinx v2.4.3
> making output directory... done
> loading intersphinx inventory from /usr/share/doc/python3.8/html/objects.inv...
> building [mo]: targets for 0 po files that are out of date
> building [html]: targets for 17 source files that are out of date
> updating environment: [new config] 17 added, 0 changed, 0 removed
> reading sources... [  5%] api
> reading sources... [ 11%] changes
> reading sources... [ 17%] comparing
> reading sources... [ 23%] components
> reading sources... [ 29%] datetime
> reading sources... [ 35%] development
> reading sources... [ 41%] django
> reading sources... [ 47%] exceptions
> reading sources... [ 52%] files
> reading sources... [ 58%] index
> reading sources... [ 64%] installation
> reading sources... [ 70%] logging
> reading sources... [ 76%] mocking
> reading sources... [ 82%] popen
> reading sources... [ 88%] streams
> reading sources... [ 94%] utilities
> reading sources... [100%] warnings
> 
> CHANGELOG.rst:12: WARNING: Title underline too short.
> 
> 6.10.0 (19 Jun 2019)
> -------------------
> CHANGELOG.rst:12: WARNING: Title underline too short.
> 
> 6.10.0 (19 Jun 2019)
> -------------------
> looking for now-outdated files... none found
> pickling environment... done
> checking consistency... done
> preparing documents... done
> writing output... [  5%] api
> writing output... [ 11%] changes
> writing output... [ 17%] comparing
> writing output... [ 23%] components
> writing output... [ 29%] datetime
> writing output... [ 35%] development
> writing output... [ 41%] django
> writing output... [ 47%] exceptions
> writing output... [ 52%] files
> writing output... [ 58%] index
> writing output... [ 64%] installation
> writing output... [ 70%] logging
> writing output... [ 76%] mocking
> writing output... [ 82%] popen
> writing output... [ 88%] streams
> writing output... [ 94%] utilities
> writing output... [100%] warnings
> 
> generating indices...  genindex py-modindexdone
> writing additional pages...  searchdone
> copying static files... ... done
> copying extra files... done
> dumping search index in English (code: en)... done
> dumping object inventory... done
> build succeeded, 2 warnings.
> 
> The HTML pages are in docs/.build/html.
> make[1]: Leaving directory '/<<PKGBUILDDIR>>'
>    dh_auto_test -O--buildsystem=pybuild
> I: pybuild base:217: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build; python3.8 -m pytest 
> ============================= test session starts ==============================
> platform linux -- Python 3.8.3, pytest-4.6.11, py-1.8.1, pluggy-0.13.0
> Django settings: testfixtures.tests.test_django.settings (from ini file)
> rootdir: /<<PKGBUILDDIR>>, inifile: setup.cfg
> plugins: django-3.5.1
> collected 695 items
> 
> testfixtures/tests/test_django/test_compare.py .                         [  0%]
> testfixtures/tests/test_compare.py ..................................... [  5%]
> ........................................................................ [ 15%]
> ............................................                             [ 22%]
> testfixtures/tests/test_comparison.py .................................. [ 27%]
> .................                                                        [ 29%]
> testfixtures/tests/test_components.py .                                  [ 29%]
> testfixtures/tests/test_date.py .......................                  [ 32%]
> testfixtures/tests/test_datetime.py .................................... [ 38%]
> ......                                                                   [ 38%]
> testfixtures/tests/test_diff.py ..                                       [ 39%]
> testfixtures/tests/test_generator.py ..                                  [ 39%]
> testfixtures/tests/test_log_capture.py ....F............                 [ 42%]
> testfixtures/tests/test_logcapture.py .............................      [ 46%]
> testfixtures/tests/test_mock.py .............                            [ 48%]
> testfixtures/tests/test_outputcapture.py ...........                     [ 49%]
> testfixtures/tests/test_popen.py ....................................... [ 55%]
> ......                                                                   [ 56%]
> testfixtures/tests/test_popen_docs.py ............                       [ 57%]
> testfixtures/tests/test_rangecomparison.py ............................. [ 62%]
> ............                                                             [ 63%]
> testfixtures/tests/test_replace.py ................................      [ 68%]
> testfixtures/tests/test_replacer.py .........                            [ 69%]
> testfixtures/tests/test_roundcomparison.py ............................. [ 73%]
> .........                                                                [ 75%]
> testfixtures/tests/test_should_raise.py ................................ [ 79%]
> ........                                                                 [ 80%]
> testfixtures/tests/test_shouldwarn.py .............                      [ 82%]
> testfixtures/tests/test_stringcomparison.py .........                    [ 84%]
> testfixtures/tests/test_sybil.py ........                                [ 85%]
> testfixtures/tests/test_tempdir.py ........                              [ 86%]
> testfixtures/tests/test_tempdirectory.py ............................... [ 90%]
> ...                                                                      [ 91%]
> testfixtures/tests/test_time.py .............................            [ 95%]
> testfixtures/tests/test_twisted.py ........                              [ 96%]
> testfixtures/tests/test_wrap.py ...FF.........                           [ 98%]
> testfixtures/tests/test_django/test_compare.py ........                  [ 99%]
> testfixtures/tests/test_django/test_shouldraise.py ..                    [100%]
> 
> =================================== FAILURES ===================================
> _____________________ TestLog_Capture.test_log_then_patch ______________________
> testfixtures/utils.py:91: in patched
>     patching.__exit__(*exc_info)
> /usr/lib/python3.8/unittest/mock.py:1524: in __exit__
>     return exit_stack.__exit__(*exc_info)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = <contextlib.ExitStack object at 0x7f3c7bf2d760>, exc_details = ()
> 
>     def __exit__(self, *exc_details):
> >       received_exc = exc_details[0] is not None
> E       IndexError: tuple index out of range
> 
> /usr/lib/python3.8/contextlib.py:483: IndexError
> ________________ TestWrap.test_our_wrap_dealing_with_mock_patch ________________
> 
> self = <testfixtures.tests.test_wrap.TestWrap testMethod=test_our_wrap_dealing_with_mock_patch>
> 
>     def test_our_wrap_dealing_with_mock_patch(self):
>     
>         @patch.multiple('testfixtures.tests.sample1', X=DEFAULT)
>         @log_capture()
>         def patched(log, X):
>             from testfixtures.tests.sample1 import X as imported_X
>             assert isinstance(log, LogCapture)
>             assert isinstance(X, MagicMock)
>             assert imported_X is X
>     
> >       patched()
> 
> testfixtures/tests/test_wrap.py:246: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> testfixtures/utils.py:91: in patched
>     patching.__exit__(*exc_info)
> /usr/lib/python3.8/unittest/mock.py:1524: in __exit__
>     return exit_stack.__exit__(*exc_info)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = <contextlib.ExitStack object at 0x7f3c7b6abfd0>, exc_details = ()
> 
>     def __exit__(self, *exc_details):
> >       received_exc = exc_details[0] is not None
> E       IndexError: tuple index out of range
> 
> /usr/lib/python3.8/contextlib.py:483: IndexError
> ________________________ TestWrap.test_patch_with_dict _________________________
> 
> self = <testfixtures.tests.test_wrap.TestWrap testMethod=test_patch_with_dict>
> 
>     def test_patch_with_dict(self):
>         @patch('testfixtures.tests.sample1.X', {'x': 1})
>         @log_capture()
>         def patched(log):
>             assert isinstance(log, LogCapture)
>             from testfixtures.tests.sample1 import X
>             assert X == {'x': 1}
>     
> >       patched()
> 
> testfixtures/tests/test_wrap.py:256: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> testfixtures/utils.py:91: in patched
>     patching.__exit__(*exc_info)
> /usr/lib/python3.8/unittest/mock.py:1524: in __exit__
>     return exit_stack.__exit__(*exc_info)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = <contextlib.ExitStack object at 0x7f3c7be37c40>, exc_details = ()
> 
>     def __exit__(self, *exc_details):
> >       received_exc = exc_details[0] is not None
> E       IndexError: tuple index out of range
> 
> /usr/lib/python3.8/contextlib.py:483: IndexError
> ===================== 3 failed, 692 passed in 1.94 seconds =====================
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build/testfixtures/logcapture.py:70: UserWarning: LogCapture instances not uninstalled by shutdown, loggers captured:
> (None,)
> (None,)
>   warnings.warn(
> E: pybuild pybuild:352: test: plugin distutils failed with: exit code=1: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_testfixtures/build; python3.8 -m pytest 
> dh_auto_test: error: pybuild --test -i python{version} -p 3.8 returned exit code 13

The full build log is available from:
   http://qa-logs.debian.net/2020/06/20/python-testfixtures_6.10.1-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!

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.



More information about the Python-modules-team mailing list