tribuchet: building on eliza structuredAttrs is enabled Sourcing python-remove-tests-dir-hook Sourcing python-catch-conflicts-hook.sh Sourcing python-remove-bin-bytecode-hook.sh Sourcing pypa-build-hook Using pypaBuildPhase Sourcing python-runtime-deps-check-hook Using pythonRuntimeDepsCheckHook Sourcing pypa-install-hook Using pypaInstallPhase Sourcing python-imports-check-hook.sh Using pythonImportsCheckPhase Sourcing python-namespaces-hook Sourcing python-catch-conflicts-hook.sh Sourcing sphinx-hook Sourcing pytest-check-hook Using pytestCheckPhase Running phase: unpackPhase unpacking source archive /nix/store/5ji6ypi4rzgdbnhyhhd6f5fvppizjnx3-source source root is source setting SOURCE_DATE_EPOCH to timestamp 315619200 of file "source/tox.ini" Running phase: patchPhase Running phase: updateAutotoolsGnuConfigScriptsPhase Running phase: configurePhase no configure script, doing nothing Running phase: buildPhase Executing pypaBuildPhase Setting SETUPTOOLS_SCM_PRETEND_VERSION to 4.7.0 Including all tracked files automatically Creating a wheel... pypa build flags: --no-isolation --outdir dist/ --wheel * Getting build dependencies for wheel... 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' reading manifest template 'MANIFEST.in' adding license file 'LICENCE' writing manifest file 'todoman.egg-info/SOURCES.txt' * Building wheel... running bdist_wheel running build running build_py creating build/lib/todoman copying todoman/model.py -> build/lib/todoman copying todoman/formatters.py -> build/lib/todoman copying todoman/__main__.py -> build/lib/todoman copying todoman/exceptions.py -> build/lib/todoman copying todoman/widgets.py -> build/lib/todoman copying todoman/interactive.py -> build/lib/todoman copying todoman/__init__.py -> build/lib/todoman copying todoman/version.py -> build/lib/todoman copying todoman/cli.py -> build/lib/todoman copying todoman/configuration.py -> build/lib/todoman running 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 reading manifest file 'todoman.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' adding license file 'LICENCE' writing manifest file 'todoman.egg-info/SOURCES.txt' installing to build/bdist.linux-aarch64/wheel running install running install_lib creating build/bdist.linux-aarch64/wheel creating build/bdist.linux-aarch64/wheel/todoman copying build/lib/todoman/formatters.py -> build/bdist.linux-aarch64/wheel/./todoman copying build/lib/todoman/interactive.py -> build/bdist.linux-aarch64/wheel/./todoman copying build/lib/todoman/configuration.py -> build/bdist.linux-aarch64/wheel/./todoman copying build/lib/todoman/__main__.py -> build/bdist.linux-aarch64/wheel/./todoman copying build/lib/todoman/model.py -> build/bdist.linux-aarch64/wheel/./todoman copying build/lib/todoman/widgets.py -> build/bdist.linux-aarch64/wheel/./todoman copying build/lib/todoman/exceptions.py -> build/bdist.linux-aarch64/wheel/./todoman copying build/lib/todoman/cli.py -> build/bdist.linux-aarch64/wheel/./todoman copying build/lib/todoman/version.py -> build/bdist.linux-aarch64/wheel/./todoman copying build/lib/todoman/__init__.py -> build/bdist.linux-aarch64/wheel/./todoman running install_egg_info Copying todoman.egg-info to build/bdist.linux-aarch64/wheel/./todoman-4.7.0-py3.14.egg-info running install_scripts creating build/bdist.linux-aarch64/wheel/todoman-4.7.0.dist-info/WHEEL creating '/build/source/dist/.tmp-8i1i8hcs/todoman-4.7.0-py3-none-any.whl' and adding 'build/bdist.linux-aarch64/wheel' to it adding 'todoman/__init__.py' adding 'todoman/__main__.py' adding 'todoman/cli.py' adding 'todoman/configuration.py' adding 'todoman/exceptions.py' adding 'todoman/formatters.py' adding 'todoman/interactive.py' adding 'todoman/model.py' adding 'todoman/version.py' adding 'todoman/widgets.py' adding 'todoman-4.7.0.dist-info/licenses/LICENCE' adding 'todoman-4.7.0.dist-info/METADATA' adding 'todoman-4.7.0.dist-info/WHEEL' adding 'todoman-4.7.0.dist-info/entry_points.txt' adding 'todoman-4.7.0.dist-info/top_level.txt' adding 'todoman-4.7.0.dist-info/RECORD' removing build/bdist.linux-aarch64/wheel Successfully built todoman-4.7.0-py3-none-any.whl Finished creating a wheel... Finished executing pypaBuildPhase Running phase: pythonRuntimeDepsCheckHook Executing pythonRuntimeDepsCheck Checking runtime dependencies for todoman-4.7.0-py3-none-any.whl Finished executing pythonRuntimeDepsCheck Running phase: installPhase Executing pypaInstallPhase Successfully installed todoman-4.7.0-py3-none-any.whl Finished executing pypaInstallPhase Running phase: pythonOutputDistPhase Executing pythonOutputDistPhase Finished executing pythonOutputDistPhase Running phase: buildSphinxPhase Executing buildSphinxPhase Sphinx documentation found in docs/source Executing sphinx-build with singlehtml builder Running Sphinx v9.1.0 loading translations [en]... locale_dir /build/source/docs/source/locales/en/LC_MESSAGES does not exist locale_dir /build/source/docs/source/locales/en/LC_MESSAGES does not exist done Converting `source_suffix = '.rst'` to `source_suffix = {'.rst': 'restructuredtext'}`. locale_dir /build/source/docs/source/locales/en/LC_MESSAGES does not exist locale_dir /build/source/docs/source/locales/en/LC_MESSAGES does not exist building [mo]: targets for 0 po files that are out of date writing output... building [singlehtml]: all documents updating environment: locale_dir /build/source/docs/source/locales/en/LC_MESSAGES does not exist [new config] 10 added, 0 changed, 0 removed reading sources... [ 10%] _configure reading sources... [ 20%] _usage reading sources... [ 30%] changelog reading sources... [ 40%] configure reading sources... [ 50%] contributing reading sources... [ 60%] index reading sources... [ 70%] install reading sources... [ 80%] licence reading sources... [ 90%] man reading sources... [100%] usage CHANGELOG.rst:325: ERROR: Inconsistent title style: skip from level 2 to 4. New features ~~~~~~~~~~~~ Established title styles: = - * [docutils] CHANGELOG.rst:336: ERROR: Inconsistent title style: skip from level 2 to 4. Packaging changes ~~~~~~~~~~~~~~~~~ Established title styles: = - * [docutils] looking for now-outdated files... none found pickling environment... done checking consistency... done preparing documents... done copying assets... copying static files... Writing evaluated template result to /build/source/.sphinx/singlehtml/singlehtml/_static/basic.css Writing evaluated template result to /build/source/.sphinx/singlehtml/singlehtml/_static/language_data.js Writing evaluated template result to /build/source/.sphinx/singlehtml/singlehtml/_static/documentation_options.js Writing evaluated template result to /build/source/.sphinx/singlehtml/singlehtml/_static/js/versions.js copying static files: done copying extra files... copying extra files: done copying assets: done assembling single document... index install configure usage man contributing changelog licence assembling single document: done writing... done writing additional files... done copying static files... Writing evaluated template result to /build/source/.sphinx/singlehtml/singlehtml/_static/basic.css Writing evaluated template result to /build/source/.sphinx/singlehtml/singlehtml/_static/language_data.js Writing evaluated template result to /build/source/.sphinx/singlehtml/singlehtml/_static/documentation_options.js Writing evaluated template result to /build/source/.sphinx/singlehtml/singlehtml/_static/js/versions.js copying static files: done copying extra files... copying extra files: done dumping object inventory... done build succeeded, 2 warnings. The HTML page is in .sphinx/singlehtml/singlehtml. Executing sphinx-build with man builder Running Sphinx v9.1.0 loading translations [en]... locale_dir /build/source/docs/source/locales/en/LC_MESSAGES does not exist locale_dir /build/source/docs/source/locales/en/LC_MESSAGES does not exist done Converting `source_suffix = '.rst'` to `source_suffix = {'.rst': 'restructuredtext'}`. locale_dir /build/source/docs/source/locales/en/LC_MESSAGES does not exist locale_dir /build/source/docs/source/locales/en/LC_MESSAGES does not exist building [mo]: targets for 0 po files that are out of date writing output... building [man]: all manpages updating environment: locale_dir /build/source/docs/source/locales/en/LC_MESSAGES does not exist [new config] 10 added, 0 changed, 0 removed reading sources... [ 10%] _configure reading sources... [ 20%] _usage reading sources... [ 30%] changelog reading sources... [ 40%] configure reading sources... [ 50%] contributing reading sources... [ 60%] index reading sources... [ 70%] install reading sources... [ 80%] licence reading sources... [ 90%] man reading sources... [100%] usage CHANGELOG.rst:325: ERROR: Inconsistent title style: skip from level 2 to 4. New features ~~~~~~~~~~~~ Established title styles: = - * [docutils] CHANGELOG.rst:336: ERROR: Inconsistent title style: skip from level 2 to 4. Packaging changes ~~~~~~~~~~~~~~~~~ Established title styles: = - * [docutils] looking for now-outdated files... none found pickling environment... done checking consistency... done preparing documents... done copying assets... copying assets: done writing... todo.1 { } done build succeeded, 2 warnings. The manual pages are in .sphinx/man/man. Running phase: installSphinxPhase Executing installSphinxPhase Running phase: fixupPhase shrinking RPATHs of ELF executables and libraries in /nix/store/wgsvfhlzm3lphw2aazkhq04iigwdm4pk-todoman-4.7.0-doc checking for references to /build/ in /nix/store/wgsvfhlzm3lphw2aazkhq04iigwdm4pk-todoman-4.7.0-doc... patching script interpreter paths in /nix/store/wgsvfhlzm3lphw2aazkhq04iigwdm4pk-todoman-4.7.0-doc shrinking RPATHs of ELF executables and libraries in /nix/store/z7n97pj9rykmmq883xy6j5wwvj4bdm4n-todoman-4.7.0-man checking for references to /build/ in /nix/store/z7n97pj9rykmmq883xy6j5wwvj4bdm4n-todoman-4.7.0-man... gzipping man pages under /nix/store/z7n97pj9rykmmq883xy6j5wwvj4bdm4n-todoman-4.7.0-man/share/man/ patching script interpreter paths in /nix/store/z7n97pj9rykmmq883xy6j5wwvj4bdm4n-todoman-4.7.0-man shrinking RPATHs of ELF executables and libraries in /nix/store/7rh55vhr85xvhz5ykjv108s28p4xzyhp-todoman-4.7.0-dist checking for references to /build/ in /nix/store/7rh55vhr85xvhz5ykjv108s28p4xzyhp-todoman-4.7.0-dist... patching script interpreter paths in /nix/store/7rh55vhr85xvhz5ykjv108s28p4xzyhp-todoman-4.7.0-dist shrinking RPATHs of ELF executables and libraries in /nix/store/xq2za56gsrs0l47h3xrr3c2cbzrsmwqi-todoman-4.7.0 checking for references to /build/ in /nix/store/xq2za56gsrs0l47h3xrr3c2cbzrsmwqi-todoman-4.7.0... patching script interpreter paths in /nix/store/xq2za56gsrs0l47h3xrr3c2cbzrsmwqi-todoman-4.7.0 stripping (with command strip and flags -S -p) in /nix/store/xq2za56gsrs0l47h3xrr3c2cbzrsmwqi-todoman-4.7.0/lib /nix/store/xq2za56gsrs0l47h3xrr3c2cbzrsmwqi-todoman-4.7.0/bin Rewriting #!/nix/store/lq2fsnmg0q3y0vlxn91w8s8wvj1m6fld-python3-3.14.8/bin/python3.14 to #!/nix/store/lq2fsnmg0q3y0vlxn91w8s8wvj1m6fld-python3-3.14.8 wrapping `/nix/store/xq2za56gsrs0l47h3xrr3c2cbzrsmwqi-todoman-4.7.0/bin/todo'... Executing pythonRemoveTestsDir Finished executing pythonRemoveTestsDir Running phase: installCheckPhase no Makefile or custom installCheckPhase, doing nothing Running phase: pythonCatchConflictsPhase Running phase: pythonRemoveBinBytecodePhase Running phase: pythonImportsCheckPhase Executing pythonImportsCheckPhase Check whether the following modules can be imported: todoman Running phase: pytestCheckPhase Executing pytestCheckPhase pytest flags: -m pytest -k not\ \(test_color_due_dates\)\ and\ not\ \(test_color_flag\)\ and\ not\ \(test_default_command\)\ and\ not\ \(test_main\)\ and\ not\ \(test_missing_cache_dir\)\ and\ not\ \(test_sorting_null_values\)\ and\ not\ \(test_xdg_existant\)\ and\ not\ \(test_sorting_fields\) ============================= test session starts ============================== platform linux -- Python 3.14.8, pytest-9.1.1, pluggy-1.6.0 -- /nix/store/lq2fsnmg0q3y0vlxn91w8s8wvj1m6fld-python3-3.14.8/bin/python3.14 cachedir: .pytest_cache hypothesis profile 'ci' -> database=None, deadline=None, print_blob=True, derandomize=True, max_examples=1000, verbosity=Verbosity.verbose, suppress_health_check=(HealthCheck.too_slow,) rootdir: /build/source configfile: pyproject.toml testpaths: tests plugins: hypothesis-6.168.1, cov-stub-1.0.0 collecting ... collected 194 items / 10 deselected / 184 selected tests/test_backend.py::test_datetime_serialization PASSED [ 0%] tests/test_backend.py::test_serialize_created_at PASSED [ 1%] tests/test_backend.py::test_serialize_dtstart PASSED [ 1%] tests/test_backend.py::test_supported_fields_are_serializeable PASSED [ 2%] tests/test_backend.py::test_vtodo_serialization PASSED [ 2%] tests/test_backend.py::test_update_last_modified PASSED [ 3%] tests/test_backend.py::test_sequence_increment PASSED [ 3%] tests/test_backend.py::test_normalize_datetime PASSED [ 4%] tests/test_cli.py::test_list PASSED [ 4%] tests/test_cli.py::test_no_default_list PASSED [ 5%] tests/test_cli.py::test_no_extra_whitespace PASSED [ 5%] tests/test_cli.py::test_percent PASSED [ 6%] tests/test_cli.py::test_list_case_insensitive[default] PASSED [ 7%] tests/test_cli.py::test_list_case_insensitive[DEfault] PASSED [ 7%] tests/test_cli.py::test_list_case_insensitive[deFAUlT] PASSED [ 8%] tests/test_cli.py::test_list_case_insensitive_collision PASSED [ 8%] tests/test_cli.py::test_list_case_insensitive_other_collision PASSED [ 9%] tests/test_cli.py::test_list_inexistant PASSED [ 9%] tests/test_cli.py::test_show_existing PASSED [ 10%] tests/test_cli.py::test_show_inexistant PASSED [ 10%] tests/test_cli.py::test_human PASSED [ 11%] tests/test_cli.py::test_two_events XFAIL (issue#9) [ 11%] tests/test_cli.py::test_delete PASSED [ 12%] tests/test_cli.py::test_delete_prompt PASSED [ 13%] tests/test_cli.py::test_copy PASSED [ 13%] tests/test_cli.py::test_move PASSED [ 14%] tests/test_cli.py::test_dtstamp PASSED [ 14%] tests/test_cli.py::test_default_list PASSED [ 15%] tests/test_cli.py::test_default_due[not specified] PASSED [ 15%] tests/test_cli.py::test_default_due[greater than 0] PASSED [ 16%] tests/test_cli.py::test_default_due[0] PASSED [ 16%] tests/test_cli.py::test_default_due2 PASSED [ 17%] tests/test_cli.py::test_sorting_output PASSED [ 17%] tests/test_cli.py::test_sort_invalid_fields PASSED [ 18%] tests/test_cli.py::test_flush PASSED [ 19%] tests/test_cli.py::test_edit PASSED [ 19%] tests/test_cli.py::test_edit_move PASSED [ 20%] tests/test_cli.py::test_edit_retains_id PASSED [ 20%] tests/test_cli.py::test_edit_inexistant PASSED [ 21%] tests/test_cli.py::test_empty_list PASSED [ 21%] tests/test_cli.py::test_show_location PASSED [ 22%] tests/test_cli.py::test_location PASSED [ 22%] tests/test_cli.py::test_sort_mixed_timezones PASSED [ 23%] tests/test_cli.py::test_humanize_interactive PASSED [ 23%] tests/test_cli.py::test_due_bad_date PASSED [ 24%] tests/test_cli.py::test_multiple_todos_in_file PASSED [ 25%] tests/test_cli.py::test_todo_new PASSED [ 25%] tests/test_cli.py::test_todo_edit PASSED [ 26%] tests/test_cli.py::test_list_startable PASSED [ 26%] tests/test_cli.py::test_bad_start_date PASSED [ 27%] tests/test_cli.py::test_done PASSED [ 27%] tests/test_cli.py::test_done_recurring PASSED [ 28%] tests/test_cli.py::test_cancel PASSED [ 28%] tests/test_cli.py::test_id_printed_for_new PASSED [ 29%] tests/test_cli.py::test_repl SKIPPED (Optional dependency "click_rep...) [ 29%] tests/test_cli.py::test_status_validation PASSED [ 30%] tests/test_cli.py::test_bad_status_validation PASSED [ 30%] tests/test_cli.py::test_status_filtering PASSED [ 31%] tests/test_cli.py::test_invoke_command PASSED [ 32%] tests/test_cli.py::test_invoke_invalid_command PASSED [ 32%] tests/test_cli.py::test_new_categories_single PASSED [ 33%] tests/test_cli.py::test_new_categories_multiple PASSED [ 33%] tests/test_cli.py::test_list_categories_single PASSED [ 34%] tests/test_cli.py::test_list_categories_multiple PASSED [ 34%] tests/test_cli.py::test_show_priority PASSED [ 35%] tests/test_cli.py::test_priority PASSED [ 35%] tests/test_cli.py::test_porcelain_precedence PASSED [ 36%] tests/test_cli.py::test_duplicate_list PASSED [ 36%] tests/test_cli.py::test_edit_raw PASSED [ 37%] tests/test_cli.py::test_new_description_from_stdin PASSED [ 38%] tests/test_cli.py::test_default_priority PASSED [ 38%] tests/test_cli.py::test_no_default_priority PASSED [ 39%] tests/test_cli.py::test_invalid_default_priority PASSED [ 39%] tests/test_config.py::test_explicit_nonexistant PASSED [ 40%] tests/test_config.py::test_xdg_nonexistant PASSED [ 40%] tests/test_config.py::test_sane_config PASSED [ 41%] tests/test_config.py::test_invalid_color PASSED [ 41%] tests/test_config.py::test_invalid_color_arg PASSED [ 42%] tests/test_config.py::test_missing_path PASSED [ 42%] tests/test_config.py::test_extra_entry XFAIL (Not implemented) [ 43%] tests/test_config.py::test_extra_section XFAIL (Not implemented) [ 44%] tests/test_config.py::test_date_field_in_time_format PASSED [ 44%] tests/test_config.py::test_date_field_in_time PASSED [ 45%] tests/test_config.py::test_colour_validation_auto PASSED [ 45%] tests/test_config.py::test_colour_validation_always PASSED [ 46%] tests/test_config.py::test_colour_validation_invalid PASSED [ 46%] tests/test_filtering.py::test_priority PASSED [ 47%] tests/test_filtering.py::test_location PASSED [ 47%] tests/test_filtering.py::test_category PASSED [ 48%] tests/test_filtering.py::test_grep PASSED [ 48%] tests/test_filtering.py::test_filtering_lists PASSED [ 49%] tests/test_filtering.py::test_due_aware PASSED [ 50%] tests/test_filtering.py::test_due_naive PASSED [ 50%] tests/test_filtering.py::test_filtering_start PASSED [ 51%] tests/test_filtering.py::test_statuses PASSED [ 51%] tests/test_formatter.py::test_humanized_datetime[CET-interval0] PASSED [ 52%] tests/test_formatter.py::test_humanized_datetime[CET-interval1] PASSED [ 52%] tests/test_formatter.py::test_humanized_datetime[HST-interval0] PASSED [ 53%] tests/test_formatter.py::test_humanized_datetime[HST-interval1] PASSED [ 53%] tests/test_formatter.py::test_humanized_date[CET-interval0] PASSED [ 54%] tests/test_formatter.py::test_humanized_date[CET-interval1] PASSED [ 54%] tests/test_formatter.py::test_humanized_date[HST-interval0] PASSED [ 55%] tests/test_formatter.py::test_humanized_date[HST-interval1] PASSED [ 55%] tests/test_formatter.py::test_format_priority PASSED [ 56%] tests/test_formatter.py::test_format_priority_compact PASSED [ 57%] tests/test_formatter.py::test_format_date PASSED [ 57%] tests/test_formatter.py::test_format_datetime PASSED [ 58%] tests/test_formatter.py::test_detailed_format PASSED [ 58%] tests/test_formatter.py::test_parse_time PASSED [ 59%] tests/test_formatter.py::test_parse_datetime PASSED [ 59%] tests/test_formatter.py::test_humanized_parse_datetime PASSED [ 60%] tests/test_formatter.py::test_simple_action PASSED [ 60%] tests/test_formatter.py::test_formatting_parsing_consitency PASSED [ 61%] tests/test_formatter.py::test_rgb_to_ansi PASSED [ 61%] tests/test_formatter.py::test_format_multiple_with_list PASSED [ 62%] tests/test_formatter.py::test_format_multiple_without_list PASSED [ 63%] tests/test_model.py::test_querying PASSED [ 63%] tests/test_model.py::test_retain_tz PASSED [ 64%] tests/test_model.py::test_due_date PASSED [ 64%] tests/test_model.py::test_change_paths PASSED [ 65%] tests/test_model.py::test_list_displayname PASSED [ 65%] tests/test_model.py::test_list_colour PASSED [ 66%] tests/test_model.py::test_list_colour_cache_invalidation PASSED [ 66%] tests/test_model.py::test_list_no_colour PASSED [ 67%] tests/test_model.py::test_database_priority_sorting PASSED [ 67%] tests/test_model.py::test_retain_unknown_fields PASSED [ 68%] tests/test_model.py::test_category_integrity PASSED [ 69%] tests/test_model.py::test_category_deletes_on_todo_delete PASSED [ 69%] tests/test_model.py::test_todo_setters PASSED [ 70%] tests/test_model.py::test_is_completed PASSED [ 70%] tests/test_model.py::test_complete_recurring[True-tz0-20990315T020000Z] PASSED [ 71%] tests/test_model.py::test_complete_recurring[True-tz0-20990315T020000] SKIPPED [ 71%] tests/test_model.py::test_complete_recurring[True-None-20990315T020000Z] SKIPPED [ 72%] tests/test_model.py::test_complete_recurring[True-None-20990315T020000] PASSED [ 72%] tests/test_model.py::test_complete_recurring[False-tz0-20990315T020000Z] PASSED [ 73%] tests/test_model.py::test_complete_recurring[False-tz0-20990315T020000] SKIPPED [ 73%] tests/test_model.py::test_complete_recurring[False-None-20990315T020000Z] SKIPPED [ 74%] tests/test_model.py::test_complete_recurring[False-None-20990315T020000] PASSED [ 75%] tests/test_model.py::test_save_recurring_related PASSED [ 75%] tests/test_model.py::test_save_recurring_related_with_date PASSED [ 76%] tests/test_model.py::test_todo_filename_absolute_path PASSED [ 76%] tests/test_model.py::test_list_equality PASSED [ 77%] tests/test_model.py::test_clone PASSED [ 77%] tests/test_model.py::test_todos_startable PASSED [ 78%] tests/test_model.py::test_filename_uid_colision PASSED [ 78%] tests/test_model.py::test_hide_cancelled PASSED [ 79%] tests/test_model.py::test_illegal_start_suppression PASSED [ 79%] tests/test_model.py::test_default_status PASSED [ 80%] tests/test_model.py::test_nullify_field PASSED [ 80%] tests/test_model.py::test_duplicate_list PASSED [ 81%] tests/test_model.py::test_unreadable_ics PASSED [ 82%] tests/test_model.py::test_deleting_todo_without_list_fails PASSED [ 82%] tests/test_model.py::test_saving_todo_without_list_fails PASSED [ 83%] tests/test_model.py::test_todo_path_without_list PASSED [ 83%] tests/test_porcelain.py::test_list_all PASSED [ 84%] tests/test_porcelain.py::test_list_start_date PASSED [ 84%] tests/test_porcelain.py::test_list_due_date PASSED [ 85%] tests/test_porcelain.py::test_list_nodue PASSED [ 85%] tests/test_porcelain.py::test_list_priority PASSED [ 86%] tests/test_porcelain.py::test_show PASSED [ 86%] tests/test_porcelain.py::test_simple_action PASSED [ 87%] tests/test_porcelain.py::test_format_datetime PASSED [ 88%] tests/test_porcelain.py::test_parse_datetime PASSED [ 88%] tests/test_porcelain.py::test_formatting_parsing_consitency PASSED [ 89%] tests/test_ui.py::test_todo_editor_priority PASSED [ 89%] tests/test_ui.py::test_todo_editor_list PASSED [ 90%] tests/test_ui.py::test_todo_editor_summary PASSED [ 90%] tests/test_ui.py::test_todo_editor_due PASSED [ 91%] tests/test_ui.py::test_toggle_help PASSED [ 91%] tests/test_ui.py::test_show_save_errors PASSED [ 92%] tests/test_ui.py::test_save_completed[True-True] PASSED [ 92%] tests/test_ui.py::test_save_completed[True-False] PASSED [ 93%] tests/test_ui.py::test_save_completed[False-True] PASSED [ 94%] tests/test_ui.py::test_save_completed[False-False] PASSED [ 94%] tests/test_ui.py::test_ctrl_c_clears SKIPPED (See: https://github.co...) [ 95%] tests/test_widgets.py::test_extended_edit_delete_word PASSED [ 95%] tests/test_widgets.py::test_extended_edit_delete_sol PASSED [ 96%] tests/test_widgets.py::test_extended_edit_delete_eol PASSED [ 96%] tests/test_widgets.py::test_extended_edit_goto_sol PASSED [ 97%] tests/test_widgets.py::test_extended_edit_goto_eol PASSED [ 97%] tests/test_widgets.py::test_extended_edit_delete_next_char PASSED [ 98%] tests/test_widgets.py::test_extended_edit_input PASSED [ 98%] tests/test_widgets.py::test_extended_edit_editor PASSED [ 99%] tests/test_widgets.py::test_priority_selector PASSED [100%] =========== 175 passed, 6 skipped, 10 deselected, 3 xfailed in 6.18s =========== Finished executing pytestCheckPhase Running phase: pytestcachePhase Running phase: pytestRemoveBytecodePhase