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 [ ] [31m2007-03-22[0m YARR! @default[0m > > 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.