Source: todoman
Version: 3.9.0-1
Severity: serious
Justification: FTBFS
Tags: bookworm sid ftbfs
User: lu...@debian.org
Usertags: ftbfs-20211023 ftbfs-bookworm

Hi,

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


Relevant part (hopefully):
>  debian/rules build
> dh build --with python3,bash-completion,sphinxdoc --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 pybuild:285: mkdir -p 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/todoman/ && cp 
> /<<PKGBUILDDIR>>/todoman/confspec.ini 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/todoman/
> I: pybuild base:232: /usr/bin/python3 setup.py build 
> running build
> running build_py
> copying todoman/widgets.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/todoman
> copying todoman/cli.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/todoman
> copying todoman/configuration.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/todoman
> copying todoman/__init__.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/todoman
> copying todoman/__main__.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/todoman
> copying todoman/formatters.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/todoman
> copying todoman/version.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/todoman
> copying todoman/exceptions.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/todoman
> copying todoman/model.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/todoman
> copying todoman/interactive.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/todoman
> running egg_info
> creating todoman.egg-info
> writing todoman.egg-info/PKG-INFO
> writing dependency_links to todoman.egg-info/dependency_links.txt
> writing entry points to todoman.egg-info/entry_points.txt
> writing requirements to todoman.egg-info/requires.txt
> writing top-level names to todoman.egg-info/top_level.txt
> writing manifest file 'todoman.egg-info/SOURCES.txt'
> reading manifest file 'todoman.egg-info/SOURCES.txt'
> adding license file 'LICENCE'
> adding license file 'AUTHORS.rst'
> writing manifest file 'todoman.egg-info/SOURCES.txt'
> I: pybuild pybuild:311: mkdir -p 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/todoman/bin && cp 
> /<<PKGBUILDDIR>>/bin/todo 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/todoman/bin/todoman && 
> PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/todoman/bin/
>  python3 setup.py build_sphinx -b html && python3 setup.py build_sphinx -b 
> text && python3 setup.py build_sphinx -b man
> running build_sphinx
> Running Sphinx v4.2.0
> making output directory... done
> WARNING: html_static_path entry '_static' does not exist
> building [mo]: targets for 0 po files that are out of date
> building [html]: targets for 8 source files that are out of date
> updating environment: [new config] 8 added, 0 changed, 0 removed
> reading sources... [ 12%] changelog
> reading sources... [ 25%] configure
> reading sources... [ 37%] contributing
> reading sources... [ 50%] index
> reading sources... [ 62%] install
> reading sources... [ 75%] licence
> reading sources... [ 87%] man
> reading sources... [100%] usage
> 
> /<<PKGBUILDDIR>>/docs/source/index.rst:42: WARNING: toctree contains 
> reference to nonexisting document 'man page'
> /<<PKGBUILDDIR>>/docs/source/man.rst:12: WARNING: Inline interpreted text or 
> phrase reference start-string without end-string.
> looking for now-outdated files... none found
> pickling environment... done
> checking consistency... /<<PKGBUILDDIR>>/docs/source/man.rst: WARNING: 
> document isn't included in any toctree
> done
> preparing documents... done
> writing output... [ 12%] changelog
> writing output... [ 25%] configure
> writing output... [ 37%] contributing
> writing output... [ 50%] index
> writing output... [ 62%] install
> writing output... [ 75%] licence
> writing output... [ 87%] man
> writing output... [100%] usage
> 
> generating indices... genindex done
> writing additional pages... search done
> copying static files... done
> copying extra files... done
> dumping search index in English (code: en)... done
> dumping object inventory... done
> build succeeded, 4 warnings.
> 
> The HTML pages are in build/sphinx/html.
> running build_sphinx
> Running Sphinx v4.2.0
> making output directory... done
> WARNING: html_static_path entry '_static' does not exist
> loading pickled environment... done
> building [mo]: targets for 0 po files that are out of date
> building [text]: targets for 8 source files that are out of date
> updating environment: 0 added, 3 changed, 0 removed
> reading sources... [ 33%] configure
> reading sources... [ 66%] index
> reading sources... [100%] man
> 
> /<<PKGBUILDDIR>>/docs/source/index.rst:42: WARNING: toctree contains 
> reference to nonexisting document 'man page'
> /<<PKGBUILDDIR>>/docs/source/man.rst:12: WARNING: Inline interpreted text or 
> phrase reference start-string without end-string.
> looking for now-outdated files... none found
> pickling environment... done
> checking consistency... /<<PKGBUILDDIR>>/docs/source/man.rst: WARNING: 
> document isn't included in any toctree
> done
> preparing documents... done
> writing output... [ 12%] changelog
> writing output... [ 25%] configure
> writing output... [ 37%] contributing
> writing output... [ 50%] index
> writing output... [ 62%] install
> writing output... [ 75%] licence
> writing output... [ 87%] man
> writing output... [100%] usage
> 
> build succeeded, 4 warnings.
> 
> The text files are in build/sphinx/text.
> running build_sphinx
> Running Sphinx v4.2.0
> making output directory... done
> WARNING: html_static_path entry '_static' does not exist
> loading pickled environment... done
> building [mo]: targets for 0 po files that are out of date
> building [man]: all manpages
> updating environment: 0 added, 3 changed, 0 removed
> reading sources... [ 33%] configure
> reading sources... [ 66%] index
> reading sources... [100%] man
> 
> /<<PKGBUILDDIR>>/docs/source/index.rst:42: WARNING: toctree contains 
> reference to nonexisting document 'man page'
> /<<PKGBUILDDIR>>/docs/source/man.rst:12: WARNING: Inline interpreted text or 
> phrase reference start-string without end-string.
> looking for now-outdated files... none found
> pickling environment... done
> checking consistency... /<<PKGBUILDDIR>>/docs/source/man.rst: WARNING: 
> document isn't included in any toctree
> done
> writing... todoman.1 { } done
> build succeeded, 4 warnings.
> 
> The manual pages are in build/sphinx/man.
>    dh_auto_test -O--buildsystem=pybuild
> I: pybuild base:232: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build; 
> python3.9 -m pytest tests
> ============================= test session starts 
> ==============================
> platform linux -- Python 3.9.7, pytest-6.2.5, py-1.10.0, pluggy-0.13.0
> rootdir: /<<PKGBUILDDIR>>, configfile: setup.cfg
> plugins: cov-3.0.0, hypothesis-5.43.3
> collected 181 items
> 
> tests/test_backend.py .........                                          [  
> 4%]
> tests/test_cli.py F.FFFFFFF...FxFF.FF......FFF.FFF...........F..FF....s. [ 
> 34%]
> ..............                                                           [ 
> 42%]
> tests/test_config.py ..F....xxF.....                                     [ 
> 50%]
> tests/test_filtering.py FFFFF..F.                                        [ 
> 55%]
> tests/test_formatter.py ...............                                  [ 
> 64%]
> tests/test_main.py .                                                     [ 
> 64%]
> tests/test_model.py .............ss..ss................                  [ 
> 83%]
> tests/test_porcelain.py ..FF.....                                        [ 
> 88%]
> tests/test_ui.py ...........                                             [ 
> 95%]
> tests/test_widgets.py .........                                          
> [100%]
> 
> =================================== FAILURES 
> ===================================
> __________________________________ test_list 
> ___________________________________
> 
> tmpdir = local('/tmp/pytest-of-user42/pytest-7/test_list0')
> runner = <conftest.runner.<locals>.SleepyCliRunner object at 0x7fcf09966040>
> create = <function create.<locals>.inner at 0x7fcf096e9e50>
> 
>     def test_list(tmpdir, runner, create):
>         result = runner.invoke(cli, ["list"], catch_exceptions=False)
> >       assert not result.exception
> E       assert not SystemExit(2)
> E        +  where SystemExit(2) = <Result SystemExit(2)>.exception
> 
> tests/test_cli.py:27: AssertionError
> ___________________________ test_no_extra_whitespace 
> ___________________________
> 
> tmpdir = local('/tmp/pytest-of-user42/pytest-7/test_no_extra_whitespace0')
> runner = <conftest.runner.<locals>.SleepyCliRunner object at 0x7fcf096d64c0>
> create = <function create.<locals>.inner at 0x7fcf0999cc10>
> 
>     def test_no_extra_whitespace(tmpdir, runner, create):
>         """
>         Test that we don't output extra whitespace
>     
>         Test that we don't output a lot of extra whitespace when there are no
>         tasks, or when there are tasks (eg: both scenarios).
>     
>         Note: Other tests should be set up so that comparisons don't care much
>         about whitespace, so that if this changes, only this test should fail.
>         """
>         result = runner.invoke(cli, ["list"], catch_exceptions=False)
> >       assert not result.exception
> E       assert not SystemExit(2)
> E        +  where SystemExit(2) = <Result SystemExit(2)>.exception
> 
> tests/test_cli.py:57: AssertionError
> _________________________________ test_percent 
> _________________________________
> 
> tmpdir = local('/tmp/pytest-of-user42/pytest-7/test_percent0')
> runner = <conftest.runner.<locals>.SleepyCliRunner object at 0x7fcf097b24f0>
> create = <function create.<locals>.inner at 0x7fcf0999caf0>
> 
>     def test_percent(tmpdir, runner, create):
>         create("test.ics", "SUMMARY:harhar\nPERCENT-COMPLETE:78\n")
>         result = runner.invoke(cli, ["list"])
> >       assert not result.exception
> E       assert not SystemExit(2)
> E        +  where SystemExit(2) = <Result SystemExit(2)>.exception
> 
> tests/test_cli.py:69: AssertionError
> _____________________ test_list_case_insensitive[default] 
> ______________________
> 
> tmpdir = 
> local('/tmp/pytest-of-user42/pytest-7/test_list_case_insensitive_def0')
> runner = <conftest.runner.<locals>.SleepyCliRunner object at 0x7fcf099b9c70>
> create = <function create.<locals>.inner at 0x7fcf09980b80>
> list_name = 'default'
> 
>     @fs_case_sensitive
>     @pytest.mark.parametrize("list_name", ["default", "DEfault", "deFAUlT"])
>     def test_list_case_insensitive(tmpdir, runner, create, list_name):
>         result = runner.invoke(cli, ["list", list_name])
> >       assert not result.exception
> E       assert not SystemExit(2)
> E        +  where SystemExit(2) = <Result SystemExit(2)>.exception
> 
> tests/test_cli.py:77: AssertionError
> _____________________ test_list_case_insensitive[DEfault] 
> ______________________
> 
> tmpdir = 
> local('/tmp/pytest-of-user42/pytest-7/test_list_case_insensitive_DEf1')
> runner = <conftest.runner.<locals>.SleepyCliRunner object at 0x7fcf099d2460>
> create = <function create.<locals>.inner at 0x7fcf099800d0>
> list_name = 'DEfault'
> 
>     @fs_case_sensitive
>     @pytest.mark.parametrize("list_name", ["default", "DEfault", "deFAUlT"])
>     def test_list_case_insensitive(tmpdir, runner, create, list_name):
>         result = runner.invoke(cli, ["list", list_name])
> >       assert not result.exception
> E       assert not SystemExit(2)
> E        +  where SystemExit(2) = <Result SystemExit(2)>.exception
> 
> tests/test_cli.py:77: AssertionError
> _____________________ test_list_case_insensitive[deFAUlT] 
> ______________________
> 
> tmpdir = 
> local('/tmp/pytest-of-user42/pytest-7/test_list_case_insensitive_deF2')
> runner = <conftest.runner.<locals>.SleepyCliRunner object at 0x7fcf099eeb80>
> create = <function create.<locals>.inner at 0x7fcf0998f700>
> list_name = 'deFAUlT'
> 
>     @fs_case_sensitive
>     @pytest.mark.parametrize("list_name", ["default", "DEfault", "deFAUlT"])
>     def test_list_case_insensitive(tmpdir, runner, create, list_name):
>         result = runner.invoke(cli, ["list", list_name])
> >       assert not result.exception
> E       assert not SystemExit(2)
> E        +  where SystemExit(2) = <Result SystemExit(2)>.exception
> 
> tests/test_cli.py:77: AssertionError
> _____________________ test_list_case_insensitive_collision 
> _____________________
> 
> tmpdir = 
> local('/tmp/pytest-of-user42/pytest-7/test_list_case_insensitive_col0')
> runner = <conftest.runner.<locals>.SleepyCliRunner object at 0x7fcf099cf2b0>
> create = <function create.<locals>.inner at 0x7fcf09980430>
> 
>     @fs_case_sensitive
>     def test_list_case_insensitive_collision(tmpdir, runner, create):
>         """
>         Test that the case-insensitive list name matching is not used if
>         colliding list names exist.
>         """
>         tmpdir.mkdir("DEFaUlT")
>     
>         result = runner.invoke(cli, ["list", "deFaulT"])
>         assert result.exception
>     
>         result = runner.invoke(cli, ["list", "default"])
> >       assert not result.exception
> E       assert not SystemExit(2)
> E        +  where SystemExit(2) = <Result SystemExit(2)>.exception
> 
> tests/test_cli.py:92: AssertionError
> __________________ test_list_case_insensitive_other_collision 
> __________________
> 
> tmpdir = 
> local('/tmp/pytest-of-user42/pytest-7/test_list_case_insensitive_oth0')
> runner = <conftest.runner.<locals>.SleepyCliRunner object at 0x7fcf097ee970>
> create = <function create.<locals>.inner at 0x7fcf0998f0d0>
> 
>     @fs_case_sensitive
>     def test_list_case_insensitive_other_collision(tmpdir, runner, create):
>         """
>         Test that the case-insensitive list name matching is used if a
>         collision exists that does not affect the queried list.
>         """
>         tmpdir.mkdir("coLLiding")
>         tmpdir.mkdir("COLLiDING")
>     
>         result = runner.invoke(cli, ["list", "cOlliDInG"])
>         assert result.exception
>     
>         result = runner.invoke(cli, ["list", "DEfAult"])
> >       assert not result.exception
> E       assert not SystemExit(2)
> E        +  where SystemExit(2) = <Result SystemExit(2)>.exception
> 
> tests/test_cli.py:111: AssertionError
> __________________________________ test_human 
> __________________________________
> 
> runner = <conftest.runner.<locals>.SleepyCliRunner object at 0x7fcf092312e0>
> 
>     def test_human(runner):
>         result = runner.invoke(
>             cli, ["new", "-l", "default", "-d", "tomorrow", "hail belzebub"]
>         )
>         assert not result.exception
>         assert "belzebub" in result.output
>     
>         result = runner.invoke(cli, ["list"])
> >       assert not result.exception
> E       assert not SystemExit(2)
> E        +  where SystemExit(2) = <Result SystemExit(2)>.exception
> 
> tests/test_cli.py:149: AssertionError
> _____________________________ test_default_command 
> _____________________________
> 
> tmpdir = local('/tmp/pytest-of-user42/pytest-7/test_default_command0')
> runner = <conftest.runner.<locals>.SleepyCliRunner object at 0x7fcf0925a130>
> create = <function create.<locals>.inner at 0x7fcf099d5940>
> 
>     def test_default_command(tmpdir, runner, create):
>         create("test.ics", "SUMMARY:harhar\n")
>         result = runner.invoke(cli)
> >       assert not result.exception
> E       assert not TypeError("object of type 'NoneType' has no len()")
> E        +  where TypeError("object of type 'NoneType' has no len()") = 
> <Result TypeError("object of type 'NoneType' has no len()")>.exception
> 
> tests/test_cli.py:175: AssertionError
> _________________________________ test_delete 
> __________________________________
> 
> runner = <conftest.runner.<locals>.SleepyCliRunner object at 0x7fcf097cc9d0>
> create = <function create.<locals>.inner at 0x7fcf091f5160>
> 
>     def test_delete(runner, create):
>         create("test.ics", "SUMMARY:harhar\n")
>         result = runner.invoke(cli, ["list"])
> >       assert not result.exception
> E       assert not SystemExit(2)
> E        +  where SystemExit(2) = <Result SystemExit(2)>.exception
> 
> tests/test_cli.py:182: AssertionError
> __________________________________ test_copy 
> ___________________________________
> 
> tmpdir = local('/tmp/pytest-of-user42/pytest-7/test_copy0')
> runner = <conftest.runner.<locals>.SleepyCliRunner object at 0x7fcf097c10d0>
> create = <function create.<locals>.inner at 0x7fcf0999cd30>
> 
>     def test_copy(tmpdir, runner, create):
>         tmpdir.mkdir("other_list")
>         create("test.ics", "SUMMARY:test_copy\n")
>         result = runner.invoke(cli, ["list"])
> >       assert not result.exception
> E       assert not SystemExit(2)
> E        +  where SystemExit(2) = <Result SystemExit(2)>.exception
> 
> tests/test_cli.py:205: AssertionError
> __________________________________ test_move 
> ___________________________________
> 
> tmpdir = local('/tmp/pytest-of-user42/pytest-7/test_move0')
> runner = <conftest.runner.<locals>.SleepyCliRunner object at 0x7fcf096f2b80>
> create = <function create.<locals>.inner at 0x7fcf09968430>
> 
>     def test_move(tmpdir, runner, create):
>         tmpdir.mkdir("other_list")
>         create("test.ics", "SUMMARY:test_move\n")
>         result = runner.invoke(cli, ["list"])
> >       assert not result.exception
> E       assert not SystemExit(2)
> E        +  where SystemExit(2) = <Result SystemExit(2)>.exception
> 
> tests/test_cli.py:222: AssertionError
> _____________________________ test_sorting_fields 
> ______________________________
> 
> tmpdir = local('/tmp/pytest-of-user42/pytest-7/test_sorting_fields0')
> runner = <conftest.runner.<locals>.SleepyCliRunner object at 0x7fcf09a35640>
> default_database = <todoman.model.Database object at 0x7fcf09a35910>
> 
>     def test_sorting_fields(tmpdir, runner, default_database):
>         tasks = []
>         for i in range(1, 10):
>             days = datetime.timedelta(days=i)
>     
>             todo = Todo(new=True)
>             todo.list = next(default_database.lists())
>             todo.due = datetime.datetime.now() + days
>             todo.created_at = datetime.datetime.now() - days
>             todo.summary = "harhar{}".format(i)
>             tasks.append(todo)
>     
>             default_database.save(todo)
>     
>         fields = (
>             "id",
>             "uid",
>             "summary",
>             "due",
>             "priority",
>             "created_at",
>             "completed_at",
>             "dtstamp",
>             "status",
>             "description",
>             "location",
>             "categories",
>         )
>     
>         @given(
>             sort_key=st.lists(
>                 st.sampled_from(fields + tuple("-" + x for x in fields)), 
> unique=True
>             )
>         )
>         def run_test(sort_key):
>             sort_key = ",".join(sort_key)
>             result = runner.invoke(cli, ["list", "--sort", sort_key])
>             assert not result.exception
>             assert result.exit_code == 0
>             assert len(result.output.strip().splitlines()) == len(tasks)
>     
> >       run_test()
> 
> tests/test_cli.py:346: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> tests/test_cli.py:335: in run_test
>     sort_key=st.lists(
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> sort_key = ''
> 
>     @given(
>         sort_key=st.lists(
>             st.sampled_from(fields + tuple("-" + x for x in fields)), 
> unique=True
>         )
>     )
>     def run_test(sort_key):
>         sort_key = ",".join(sort_key)
>         result = runner.invoke(cli, ["list", "--sort", sort_key])
> >       assert not result.exception
> E       assert not SystemExit(2)
> E        +  where SystemExit(2) = <Result SystemExit(2)>.exception
> 
> tests/test_cli.py:342: AssertionError
> ----------------------------- Captured stdout call 
> -----------------------------
> Falsifying example: run_test(
>     sort_key=[],
> )
> _____________________________ test_sorting_output 
> ______________________________
> 
> tmpdir = local('/tmp/pytest-of-user42/pytest-7/test_sorting_output0')
> runner = <conftest.runner.<locals>.SleepyCliRunner object at 0x7fcf0917bd90>
> create = <function create.<locals>.inner at 0x7fcf0913cf70>
> 
>     def test_sorting_output(tmpdir, runner, create):
>         create("test.ics", 
> "SUMMARY:aaa\nDUE;VALUE=DATE-TIME;TZID=ART:20160102T000000\n")
>         create("test2.ics", 
> "SUMMARY:bbb\nDUE;VALUE=DATE-TIME;TZID=ART:20160101T000000\n")
>     
>         examples = [("-summary", ["aaa", "bbb"]), ("due", ["aaa", "bbb"])]
>     
>         # Normal sorting, reversed by default
>         all_examples = [(["--sort", key], order) for key, order in examples]
>     
>         # Testing --reverse, same exact output
>         all_examples.extend(
>             (["--reverse", "--sort", key], order) for key, order in examples
>         )
>     
>         # Testing --no-reverse
>         all_examples.extend(
>             (["--no-reverse", "--sort", key], reversed(order)) for key, order 
> in examples
>         )
>     
>         for args, order in all_examples:
>             result = runner.invoke(cli, ["list"] + args)
> >           assert not result.exception
> E           assert not SystemExit(2)
> E            +  where SystemExit(2) = <Result SystemExit(2)>.exception
> 
> tests/test_cli.py:370: AssertionError
> ___________________________ test_sorting_null_values 
> ___________________________
> 
> tmpdir = local('/tmp/pytest-of-user42/pytest-7/test_sorting_null_values0')
> runner = <conftest.runner.<locals>.SleepyCliRunner object at 0x7fcf091a3700>
> create = <function create.<locals>.inner at 0x7fcf0a275700>
> 
>     def test_sorting_null_values(tmpdir, runner, create):
>         create("test.ics", "SUMMARY:aaa\nPRIORITY:9\n")
>         create("test2.ics", 
> "SUMMARY:bbb\nDUE;VALUE=DATE-TIME;TZID=ART:20160101T000000\n")
>     
>         result = runner.invoke(cli)
> >       assert not result.exception
> E       assert not TypeError("object of type 'NoneType' has no len()")
> E        +  where TypeError("object of type 'NoneType' has no len()") = 
> <Result TypeError("object of type 'NoneType' has no len()")>.exception
> 
> tests/test_cli.py:381: AssertionError
> ___________________________ test_color_due_dates[72] 
> ___________________________
> 
> tmpdir = local('/tmp/pytest-of-user42/pytest-7/test_color_due_dates_72_0')
> runner = <conftest.runner.<locals>.SleepyCliRunner object at 0x7fcf0916a8e0>
> create = <function create.<locals>.inner at 0x7fcf0913caf0>, hours = 72
> 
>     @pytest.mark.parametrize("hours", [72, -72])
>     def test_color_due_dates(tmpdir, runner, create, hours):
>         due = datetime.datetime.now() + datetime.timedelta(hours=hours)
>         create(
>             "test.ics",
>             
> "SUMMARY:aaa\nSTATUS:IN-PROCESS\nDUE;VALUE=DATE-TIME;TZID=ART:{}\n".format(
>                 due.strftime("%Y%m%dT%H%M%S")
>             ),
>         )
>     
>         result = runner.invoke(cli, ["--color", "always"])
> >       assert not result.exception
> E       assert not TypeError("object of type 'NoneType' has no len()")
> E        +  where TypeError("object of type 'NoneType' has no len()") = 
> <Result TypeError("object of type 'NoneType' has no len()")>.exception
> 
> tests/test_cli.py:404: AssertionError
> __________________________ test_color_due_dates[-72] 
> ___________________________
> 
> tmpdir = local('/tmp/pytest-of-user42/pytest-7/test_color_due_dates__72_0')
> runner = <conftest.runner.<locals>.SleepyCliRunner object at 0x7fcf099f3850>
> create = <function create.<locals>.inner at 0x7fcf0999ce50>, hours = -72
> 
>     @pytest.mark.parametrize("hours", [72, -72])
>     def test_color_due_dates(tmpdir, runner, create, hours):
>         due = datetime.datetime.now() + datetime.timedelta(hours=hours)
>         create(
>             "test.ics",
>             
> "SUMMARY:aaa\nSTATUS:IN-PROCESS\nDUE;VALUE=DATE-TIME;TZID=ART:{}\n".format(
>                 due.strftime("%Y%m%dT%H%M%S")
>             ),
>         )
>     
>         result = runner.invoke(cli, ["--color", "always"])
> >       assert not result.exception
> E       assert not TypeError("object of type 'NoneType' has no len()")
> E        +  where TypeError("object of type 'NoneType' has no len()") = 
> <Result TypeError("object of type 'NoneType' has no len()")>.exception
> 
> tests/test_cli.py:404: AssertionError
> _______________________________ test_color_flag 
> ________________________________
> 
> runner = <conftest.runner.<locals>.SleepyCliRunner object at 0x7fcf09a2ed00>
> todo_factory = <function todo_factory.<locals>.inner at 0x7fcf091530d0>
> 
>     def test_color_flag(runner, todo_factory):
>         todo_factory(due=datetime.datetime(2007, 3, 22))
>     
>         result = runner.invoke(cli, ["--color", "always"], color=True)
> >       assert (
>             result.output.strip()
>             == "1  [ ]    \x1b[31m2007-03-22\x1b[0m  YARR! @default\x1b[0m"
>         )
> E       AssertionError: assert '' == '1  [ ]    \x...efault\x1b[0m'
> E         - 1  [ ]    2007-03-22  YARR! @default
> 
> tests/test_cli.py:419: AssertionError
> _________________________ test_multiple_todos_in_file 
> __________________________
> 
> runner = <conftest.runner.<locals>.SleepyCliRunner object at 0x7fcf0998e160>
> create = <function create.<locals>.inner at 0x7fcf091e2c10>
> 
>     def test_multiple_todos_in_file(runner, create):
>         path = create("test.ics", 
> "SUMMARY:a\nEND:VTODO\nBEGIN:VTODO\nSUMMARY:b\n")
>     
>         for _ in range(2):
>             with patch("todoman.model.logger", spec=True) as mocked_logger:
>                 result = runner.invoke(cli, ["list"])
> >               assert " a " in result.output
> E               assert ' a ' in 'Usage: cli list [OPTIONS] [LISTS]...\nTry 
> \'cli list --help\' for help.\n\nError: Invalid value for \'--status\' / 
> \'...alid status, "[\'NEEDS-ACTION\'", statuses must be one of "CANCELLED, 
> COMPLETED, IN-PROCESS, NEEDS-ACTION", or "ANY"\n'
> E                +  where 'Usage: cli list [OPTIONS] [LISTS]...\nTry \'cli 
> list --help\' for help.\n\nError: Invalid value for \'--status\' / \'...alid 
> status, "[\'NEEDS-ACTION\'", statuses must be one of "CANCELLED, COMPLETED, 
> IN-PROCESS, NEEDS-ACTION", or "ANY"\n' = <Result SystemExit(2)>.output
> 
> tests/test_cli.py:596: AssertionError
> _____________________________ test_list_startable 
> ______________________________
> 
> tmpdir = local('/tmp/pytest-of-user42/pytest-7/test_list_startable0')
> runner = <conftest.runner.<locals>.SleepyCliRunner object at 0x7fcf0923deb0>
> todo_factory = <function todo_factory.<locals>.inner at 0x7fcf09aad3a0>
> 
>     @pyicu_sensitive
>     @freeze_time("2017, 3, 20")
>     def test_list_startable(tmpdir, runner, todo_factory):
>         todo_factory(summary="started", start=datetime.datetime(2017, 3, 15))
>         todo_factory(summary="nostart")
>         todo_factory(summary="unstarted", start=datetime.datetime(2017, 3, 
> 24))
>     
>         result = runner.invoke(
>             cli,
>             ["list", "--startable"],
>             catch_exceptions=False,
>         )
>     
> >       assert not result.exception
> E       assert not SystemExit(2)
> E        +  where SystemExit(2) = <Result SystemExit(2)>.exception
> 
> tests/test_cli.py:652: AssertionError
> _____________________________ test_bad_start_date 
> ______________________________
> 
> runner = <conftest.runner.<locals>.SleepyCliRunner object at 0x7fcf0923dc70>
> 
>     def test_bad_start_date(runner):
>         result = runner.invoke(cli, ["list", "--start"])
>         assert result.exception
> >       assert result.output.strip() == "Error: --start option requires 2 
> > arguments"
> E       AssertionError: assert 'Error: Optio... 2 arguments.' == 'Error: 
> --sta...s 2 arguments'
> E         - Error: --start option requires 2 arguments
> E         ?               ^^^^^^^
> E         + Error: Option '--start' requires 2 arguments.
> E         ?        ++++++++       ^                     +
> 
> tests/test_cli.py:682: AssertionError
> ______________________________ test_xdg_existant 
> _______________________________
> 
> runner = <conftest.runner.<locals>.SleepyCliRunner object at 0x7fcf090d71f0>
> tmpdir = local('/tmp/pytest-of-user42/pytest-7/test_xdg_existant0')
> config = local('/tmp/pytest-of-user42/pytest-7/test_xdg_existant0/config')
> 
>     def test_xdg_existant(runner, tmpdir, config):
>         with tmpdir.mkdir("todoman").join("todoman.conf").open("w") as f:
>             with config.open() as c:
>                 f.write(c.read())
>     
>         with patch("xdg.BaseDirectory.xdg_config_dirs", [str(tmpdir)]):
>             result = CliRunner().invoke(
>                 cli,
>                 catch_exceptions=True,
>             )
> >           assert not result.exception
> E           assert not TypeError("object of type 'NoneType' has no len()")
> E            +  where TypeError("object of type 'NoneType' has no len()") = 
> <Result TypeError("object of type 'NoneType' has no len()")>.exception
> 
> tests/test_config.py:41: AssertionError
> ____________________________ test_missing_cache_dir 
> ____________________________
> 
> config = 
> local('/tmp/pytest-of-user42/pytest-7/test_missing_cache_dir0/config')
> runner = <conftest.runner.<locals>.SleepyCliRunner object at 0x7fcf090be100>
> tmpdir = local('/tmp/pytest-of-user42/pytest-7/test_missing_cache_dir0')
> 
>     def test_missing_cache_dir(config, runner, tmpdir):
>         cache_dir = tmpdir.join("does").join("not").join("exist")
>         cache_file = cache_dir.join("cache.sqlite")
>     
>         path = tmpdir.join("config")
>         path.write("cache_path = {}\n".format(cache_file), "a")
>         path.write("[main]\npath = {}/*\ncache_path = 
> {}\n".format(str(tmpdir), cache_file))
>     
>         result = runner.invoke(cli)
> >       assert not result.exception
> E       assert not TypeError("object of type 'NoneType' has no len()")
> E        +  where TypeError("object of type 'NoneType' has no len()") = 
> <Result TypeError("object of type 'NoneType' has no len()")>.exception
> 
> tests/test_config.py:108: AssertionError
> ________________________________ test_priority 
> _________________________________
> 
> tmpdir = local('/tmp/pytest-of-user42/pytest-7/test_priority1')
> runner = <conftest.runner.<locals>.SleepyCliRunner object at 0x7fcf09b42760>
> create = <function create.<locals>.inner at 0x7fcf090f13a0>
> 
>     def test_priority(tmpdir, runner, create):
>         result = runner.invoke(cli, ["list"], catch_exceptions=False)
> >       assert not result.exception
> E       assert not SystemExit(2)
> E        +  where SystemExit(2) = <Result SystemExit(2)>.exception
> 
> tests/test_filtering.py:11: AssertionError
> ________________________________ test_location 
> _________________________________
> 
> tmpdir = local('/tmp/pytest-of-user42/pytest-7/test_location1')
> runner = <conftest.runner.<locals>.SleepyCliRunner object at 0x7fcf09b42df0>
> create = <function create.<locals>.inner at 0x7fcf099c3820>
> 
>     def test_location(tmpdir, runner, create):
>         result = runner.invoke(cli, ["list"], catch_exceptions=False)
> >       assert not result.exception
> E       assert not SystemExit(2)
> E        +  where SystemExit(2) = <Result SystemExit(2)>.exception
> 
> tests/test_filtering.py:53: AssertionError
> ________________________________ test_category 
> _________________________________
> 
> tmpdir = local('/tmp/pytest-of-user42/pytest-7/test_category0')
> runner = <conftest.runner.<locals>.SleepyCliRunner object at 0x7fcf090d24f0>
> create = <function create.<locals>.inner at 0x7fcf090f15e0>
> 
>     def test_category(tmpdir, runner, create):
>         result = runner.invoke(cli, ["list"], catch_exceptions=False)
> >       assert not result.exception
> E       assert not SystemExit(2)
> E        +  where SystemExit(2) = <Result SystemExit(2)>.exception
> 
> tests/test_filtering.py:68: AssertionError
> __________________________________ test_grep 
> ___________________________________
> 
> tmpdir = local('/tmp/pytest-of-user42/pytest-7/test_grep0')
> runner = <conftest.runner.<locals>.SleepyCliRunner object at 0x7fcf09b517c0>
> create = <function create.<locals>.inner at 0x7fcf090f1820>
> 
>     def test_grep(tmpdir, runner, create):
>         result = runner.invoke(cli, ["list"], catch_exceptions=False)
> >       assert not result.exception
> E       assert not SystemExit(2)
> E        +  where SystemExit(2) = <Result SystemExit(2)>.exception
> 
> tests/test_filtering.py:83: AssertionError
> _____________________________ test_filtering_lists 
> _____________________________
> 
> tmpdir = local('/tmp/pytest-of-user42/pytest-7/test_filtering_lists0')
> runner = <conftest.runner.<locals>.SleepyCliRunner object at 0x7fcf091cbbb0>
> create = <function create.<locals>.inner at 0x7fcf090f1550>
> 
>     def test_filtering_lists(tmpdir, runner, create):
>         tmpdir.mkdir("list_one")
>         tmpdir.mkdir("list_two")
>         tmpdir.mkdir("list_three")
>     
>         runner.invoke(cli, ["new", "-l", "list_one", "todo one"])
>         runner.invoke(cli, ["new", "-l", "list_two", "todo two"])
>         runner.invoke(cli, ["new", "-l", "list_three", "todo three"])
>     
>         # No filter
>         result = runner.invoke(cli, ["list"])
> >       assert not result.exception
> E       assert not SystemExit(2)
> E        +  where SystemExit(2) = <Result SystemExit(2)>.exception
> 
> tests/test_filtering.py:128: AssertionError
> _____________________________ test_filtering_start 
> _____________________________
> 
> tmpdir = local('/tmp/pytest-of-user42/pytest-7/test_filtering_start0')
> runner = <conftest.runner.<locals>.SleepyCliRunner object at 0x7fcf090d06d0>
> todo_factory = <function todo_factory.<locals>.inner at 0x7fcf091cc160>
> 
>     def test_filtering_start(tmpdir, runner, todo_factory):
>         today = datetime.now()
>         now = today.strftime("%Y-%m-%d")
>     
>         tomorrow = (today + timedelta(days=1)).strftime("%Y-%m-%d")
>         yesterday = (today + timedelta(days=-1)).strftime("%Y-%m-%d")
>     
>         result = runner.invoke(cli, ["list", "--start", "before", now])
> >       assert not result.exception
> E       assert not SystemExit(2)
> E        +  where SystemExit(2) = <Result SystemExit(2)>.exception
> 
> tests/test_filtering.py:205: AssertionError
> _______________________________ test_list_nodue 
> ________________________________
> 
> tmpdir = local('/tmp/pytest-of-user42/pytest-7/test_list_nodue0')
> runner = <conftest.runner.<locals>.SleepyCliRunner object at 0x7fcf09060070>
> create = <function create.<locals>.inner at 0x7fcf091cc550>
> 
>     def test_list_nodue(tmpdir, runner, create):
>         create("test.ics", "SUMMARY:Do 
> stuff\nPERCENT-COMPLETE:12\nPRIORITY:4\n")
>         result = runner.invoke(cli, ["--porcelain", "list"])
>     
>         expected = [
>             {
>                 "completed": False,
>                 "due": None,
>                 "id": 1,
>                 "list": "default",
>                 "location": "",
>                 "percent": 12,
>                 "priority": 4,
>                 "summary": "Do stuff",
>             }
>         ]
>     
> >       assert not result.exception
> E       assert not SystemExit(2)
> E        +  where SystemExit(2) = <Result SystemExit(2)>.exception
> 
> tests/test_porcelain.py:83: AssertionError
> ______________________________ test_list_priority 
> ______________________________
> 
> tmpdir = local('/tmp/pytest-of-user42/pytest-7/test_list_priority0')
> runner = <conftest.runner.<locals>.SleepyCliRunner object at 0x7fcf09044310>
> create = <function create.<locals>.inner at 0x7fcf090f1c10>
> 
>     def test_list_priority(tmpdir, runner, create):
>         result = runner.invoke(cli, ["--porcelain", "list"], 
> catch_exceptions=False)
> >       assert not result.exception
> E       assert not SystemExit(2)
> E        +  where SystemExit(2) = <Result SystemExit(2)>.exception
> 
> tests/test_porcelain.py:89: AssertionError
> 
> ----------- coverage: platform linux, python 3.9.7-final-0 -----------
> Name                       Stmts   Miss  Cover   Missing
> --------------------------------------------------------
> todoman/__init__.py            3      0   100%
> todoman/__main__.py            3      0   100%
> todoman/cli.py               310     17    95%   90-91, 100, 107-108, 139, 
> 296, 530-535, 548-551
> todoman/configuration.py      48      0   100%
> todoman/exceptions.py         18      1    94%   22
> todoman/formatters.py        167     14    92%   75, 146, 148, 151-154, 
> 222-223, 254-260
> todoman/interactive.py       100      0   100%
> todoman/model.py             503     24    95%   220, 737-738, 743-744, 
> 749-750, 756-763, 768-774, 786, 811-815, 901
> todoman/version.py             2      0   100%
> todoman/widgets.py            95      0   100%
> --------------------------------------------------------
> TOTAL                       1249     56    96%
> 
> =========================== short test summary info 
> ============================
> FAILED tests/test_cli.py::test_list - assert not SystemExit(2)
> FAILED tests/test_cli.py::test_no_extra_whitespace - assert not SystemExit(2)
> FAILED tests/test_cli.py::test_percent - assert not SystemExit(2)
> FAILED tests/test_cli.py::test_list_case_insensitive[default] - assert not 
> Sy...
> FAILED tests/test_cli.py::test_list_case_insensitive[DEfault] - assert not 
> Sy...
> FAILED tests/test_cli.py::test_list_case_insensitive[deFAUlT] - assert not 
> Sy...
> FAILED tests/test_cli.py::test_list_case_insensitive_collision - assert not 
> S...
> FAILED tests/test_cli.py::test_list_case_insensitive_other_collision - 
> assert...
> FAILED tests/test_cli.py::test_human - assert not SystemExit(2)
> FAILED tests/test_cli.py::test_default_command - assert not 
> TypeError("object...
> FAILED tests/test_cli.py::test_delete - assert not SystemExit(2)
> FAILED tests/test_cli.py::test_copy - assert not SystemExit(2)
> FAILED tests/test_cli.py::test_move - assert not SystemExit(2)
> FAILED tests/test_cli.py::test_sorting_fields - assert not SystemExit(2)
> FAILED tests/test_cli.py::test_sorting_output - assert not SystemExit(2)
> FAILED tests/test_cli.py::test_sorting_null_values - assert not 
> TypeError("ob...
> FAILED tests/test_cli.py::test_color_due_dates[72] - assert not 
> TypeError("ob...
> FAILED tests/test_cli.py::test_color_due_dates[-72] - assert not 
> TypeError("o...
> FAILED tests/test_cli.py::test_color_flag - AssertionError: assert '' == '1  
> ...
> FAILED tests/test_cli.py::test_multiple_todos_in_file - assert ' a ' in 
> 'Usag...
> FAILED tests/test_cli.py::test_list_startable - assert not SystemExit(2)
> FAILED tests/test_cli.py::test_bad_start_date - AssertionError: assert 
> 'Error...
> FAILED tests/test_config.py::test_xdg_existant - assert not 
> TypeError("object...
> FAILED tests/test_config.py::test_missing_cache_dir - assert not 
> TypeError("o...
> FAILED tests/test_filtering.py::test_priority - assert not SystemExit(2)
> FAILED tests/test_filtering.py::test_location - assert not SystemExit(2)
> FAILED tests/test_filtering.py::test_category - assert not SystemExit(2)
> FAILED tests/test_filtering.py::test_grep - assert not SystemExit(2)
> FAILED tests/test_filtering.py::test_filtering_lists - assert not 
> SystemExit(2)
> FAILED tests/test_filtering.py::test_filtering_start - assert not 
> SystemExit(2)
> FAILED tests/test_porcelain.py::test_list_nodue - assert not SystemExit(2)
> FAILED tests/test_porcelain.py::test_list_priority - assert not SystemExit(2)
> ============= 32 failed, 141 passed, 5 skipped, 3 xfailed in 8.00s 
> =============
> E: pybuild pybuild:354: test: plugin distutils failed with: exit code=1: cd 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build; python3.9 -m pytest tests
> 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/10/23/todoman_3.9.0-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 mine
so that we can identify if something relevant changed in the meantime.

Reply via email to