>>> py3-textual: Building testing/py3-textual 0.85.2-r0 (using abuild 3.14.1-r3) started Sun, 17 Nov 2024 16:58:40 +0000 >>> py3-textual: Validating /home/buildozer/aports/testing/py3-textual/APKBUILD... >>> py3-textual: Analyzing dependencies... >>> py3-textual: Installing for build: build-base python3 py3-linkify-it-py py3-markdown-it-py py3-mdit-py-plugins py3-platformdirs py3-rich py3-typing-extensions py3-gpep517 py3-poetry-core py3-pytest py3-pytest-xdist py3-pytest-asyncio (1/59) Installing libbz2 (1.0.8-r6) (2/59) Installing libffi (3.4.6-r0) (3/59) Installing gdbm (1.24-r0) (4/59) Installing xz-libs (5.6.3-r0) (5/59) Installing mpdecimal (4.0.0-r0) (6/59) Installing libpanelw (6.5_p20241006-r3) (7/59) Installing sqlite-libs (3.47.0-r0) (8/59) Installing python3 (3.12.7-r1) (9/59) Installing python3-pycache-pyc0 (3.12.7-r1) (10/59) Installing pyc (3.12.7-r1) (11/59) Installing python3-pyc (3.12.7-r1) (12/59) Installing py3-uc-micro-py (1.0.2-r1) (13/59) Installing py3-linkify-it-py (2.0.3-r1) (14/59) Installing py3-linkify-it-py-pyc (2.0.3-r1) (15/59) Installing py3-attrs (24.2.0-r0) (16/59) Installing py3-attrs-pyc (24.2.0-r0) (17/59) Installing py3-mdurl (0.1.2-r3) (18/59) Installing py3-mdurl-pyc (0.1.2-r3) (19/59) Installing py3-markdown-it-py (3.0.0-r1) (20/59) Installing py3-markdown-it-py-pyc (3.0.0-r1) (21/59) Installing py3-mdit-py-plugins (0.4.2-r0) (22/59) Installing py3-mdit-py-plugins-pyc (0.4.2-r0) (23/59) Installing py3-platformdirs (4.3.6-r0) (24/59) Installing py3-platformdirs-pyc (4.3.6-r0) (25/59) Installing py3-pygments (2.18.0-r0) (26/59) Installing py3-pygments-pyc (2.18.0-r0) (27/59) Installing py3-rich (13.9.4-r0) (28/59) Installing py3-rich-pyc (13.9.4-r0) (29/59) Installing py3-typing-extensions (4.12.2-r0) (30/59) Installing py3-typing-extensions-pyc (4.12.2-r0) (31/59) Installing py3-installer (0.7.0-r2) (32/59) Installing py3-installer-pyc (0.7.0-r2) (33/59) Installing py3-gpep517 (16-r0) (34/59) Installing py3-gpep517-pyc (16-r0) (35/59) Installing py3-fastjsonschema (2.20.0-r0) (36/59) Installing py3-fastjsonschema-pyc (2.20.0-r0) (37/59) Installing py3-lark-parser (1.1.9-r1) (38/59) Installing py3-lark-parser-pyc (1.1.9-r1) (39/59) Installing py3-parsing (3.1.4-r0) (40/59) Installing py3-parsing-pyc (3.1.4-r0) (41/59) Installing py3-packaging (24.2-r0) (42/59) Installing py3-packaging-pyc (24.2-r0) (43/59) Installing py3-poetry-core (1.9.1-r0) (44/59) Installing py3-poetry-core-pyc (1.9.1-r0) (45/59) Installing py3-iniconfig (2.0.0-r1) (46/59) Installing py3-iniconfig-pyc (2.0.0-r1) (47/59) Installing py3-pluggy (1.5.0-r0) (48/59) Installing py3-pluggy-pyc (1.5.0-r0) (49/59) Installing py3-py (1.11.0-r4) (50/59) Installing py3-py-pyc (1.11.0-r4) (51/59) Installing py3-pytest (8.3.3-r0) (52/59) Installing py3-pytest-pyc (8.3.3-r0) (53/59) Installing py3-execnet (2.1.1-r0) (54/59) Installing py3-execnet-pyc (2.1.1-r0) (55/59) Installing py3-pytest-xdist (3.6.1-r0) (56/59) Installing py3-pytest-xdist-pyc (3.6.1-r0) (57/59) Installing py3-pytest-asyncio (0.24.0-r0) (58/59) Installing py3-pytest-asyncio-pyc (0.24.0-r0) (59/59) Installing .makedepends-py3-textual (20241117.165842) Executing busybox-1.37.0-r7.trigger OK: 307 MiB in 161 packages >>> py3-textual: Cleaning up srcdir >>> py3-textual: Cleaning up pkgdir >>> py3-textual: Cleaning up tmpdir >>> py3-textual: Fetching https://distfiles.alpinelinux.org/distfiles/edge/py3-textual-0.85.2.tar.gz % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 curl: (22) The requested URL returned error: 404 >>> py3-textual: Fetching py3-textual-0.85.2.tar.gz::https://github.com/Textualize/textual/archive/refs/tags/v0.85.2.tar.gz % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 670k 0 670k 0 0 1468k 0 --:--:-- --:--:-- --:--:-- 1468k 100 23.0M 0 23.0M 0 0 15.8M 0 --:--:-- 0:00:01 --:--:-- 22.3M 100 28.0M 0 28.0M 0 0 15.7M 0 --:--:-- 0:00:01 --:--:-- 20.6M >>> py3-textual: Fetching https://distfiles.alpinelinux.org/distfiles/edge/py3-textual-0.85.2.tar.gz >>> py3-textual: Checking sha512sums... py3-textual-0.85.2.tar.gz: OK >>> py3-textual: Unpacking /var/cache/distfiles/py3-textual-0.85.2.tar.gz... 2024-11-17 16:58:45,640 gpep517 INFO Building wheel via backend poetry.core.masonry.api 2024-11-17 16:58:45,855 poetry.core.masonry.builders.wheel INFO Building wheel 2024-11-17 16:58:46,104 poetry.core.masonry.builders.wheel INFO Built textual-0.85.2-py3-none-any.whl 2024-11-17 16:58:46,104 gpep517 INFO The backend produced .dist/textual-0.85.2-py3-none-any.whl textual-0.85.2-py3-none-any.whl ============================= test session starts ============================== platform linux -- Python 3.12.7, pytest-8.3.3, pluggy-1.5.0 -- /home/buildozer/aports/testing/py3-textual/src/textual-0.85.2/.testenv/bin/python3 cachedir: .pytest_cache rootdir: /home/buildozer/aports/testing/py3-textual/src/textual-0.85.2 configfile: pyproject.toml testpaths: tests plugins: asyncio-0.24.0, xdist-3.6.1 asyncio: mode=Mode.AUTO, default_loop_scope=function collecting ... collected 2674 items tests/animations/test_disabling_animations.py::test_style_animations_via_animate_work_on_full PASSED [ 0%] tests/animations/test_disabling_animations.py::test_style_animations_via_animate_are_disabled_on_basic PASSED [ 0%] tests/animations/test_disabling_animations.py::test_style_animations_via_animate_are_disabled_on_none PASSED [ 0%] tests/animations/test_disabling_animations.py::test_style_animations_via_transition_work_on_full PASSED [ 0%] tests/animations/test_disabling_animations.py::test_style_animations_via_transition_are_disabled_on_basic PASSED [ 0%] tests/animations/test_disabling_animations.py::test_style_animations_via_transition_are_disabled_on_none PASSED [ 0%] tests/animations/test_environment_variable.py::test__get_textual_animations[-full] PASSED [ 0%] tests/animations/test_environment_variable.py::test__get_textual_animations[FULL-full] PASSED [ 0%] tests/animations/test_environment_variable.py::test__get_textual_animations[BASIC-basic] PASSED [ 0%] tests/animations/test_environment_variable.py::test__get_textual_animations[NONE-none] PASSED [ 0%] tests/animations/test_environment_variable.py::test__get_textual_animations[garbanzo beans-full] PASSED [ 0%] tests/animations/test_environment_variable.py::test_app_show_animations[full] PASSED [ 0%] tests/animations/test_environment_variable.py::test_app_show_animations[basic] PASSED [ 0%] tests/animations/test_environment_variable.py::test_app_show_animations[none] PASSED [ 0%] tests/animations/test_loading_indicator_animation.py::test_loading_indicator_is_not_static_on_full PASSED [ 0%] tests/animations/test_loading_indicator_animation.py::test_loading_indicator_is_not_static_on_basic PASSED [ 0%] tests/animations/test_loading_indicator_animation.py::test_loading_indicator_is_static_on_none PASSED [ 0%] tests/animations/test_progress_bar_animation.py::test_progress_bar_animates_on_full PASSED [ 0%] tests/animations/test_progress_bar_animation.py::test_progress_bar_animates_on_basic PASSED [ 0%] tests/animations/test_progress_bar_animation.py::test_progress_bar_does_not_animate_on_none PASSED [ 0%] tests/animations/test_scrolling_animation.py::test_scrolling_animates_on_full PASSED [ 0%] tests/animations/test_scrolling_animation.py::test_scrolling_animates_on_basic PASSED [ 0%] tests/animations/test_scrolling_animation.py::test_scrolling_does_not_animate_on_none PASSED [ 0%] tests/animations/test_switch_animation.py::test_switch_animates_on_full PASSED [ 0%] tests/animations/test_switch_animation.py::test_switch_animates_on_basic PASSED [ 0%] tests/animations/test_switch_animation.py::test_switch_does_not_animate_on_none PASSED [ 0%] tests/animations/test_tabs_underline_animation.py::test_tabs_underline_animates_on_full PASSED [ 1%] tests/animations/test_tabs_underline_animation.py::test_tabs_underline_animates_on_basic PASSED [ 1%] tests/animations/test_tabs_underline_animation.py::test_tabs_underline_does_not_animate_on_none PASSED [ 1%] tests/command_palette/test_click_away.py::test_clicking_outside_command_palette_closes_it PASSED [ 1%] tests/command_palette/test_command_source_environment.py::test_command_source_environment PASSED [ 1%] tests/command_palette/test_declare_sources.py::test_sources_with_no_known_screen PASSED [ 1%] tests/command_palette/test_declare_sources.py::test_no_app_command_sources PASSED [ 1%] tests/command_palette/test_declare_sources.py::test_app_command_sources PASSED [ 1%] tests/command_palette/test_declare_sources.py::test_no_screen_command_sources PASSED [ 1%] tests/command_palette/test_declare_sources.py::test_screen_command_sources PASSED [ 1%] tests/command_palette/test_declare_sources.py::test_app_and_screen_command_sources_combine PASSED [ 1%] tests/command_palette/test_discover.py::test_discovery_visible PASSED [ 1%] tests/command_palette/test_escaping.py::test_escape_closes_when_no_list_visible PASSED [ 1%] tests/command_palette/test_events.py::test_command_palette_opened_event PASSED [ 1%] tests/command_palette/test_events.py::test_command_palette_closed_event PASSED [ 1%] tests/command_palette/test_events.py::test_command_palette_closed_event_value PASSED [ 1%] tests/command_palette/test_events.py::test_command_palette_option_highlighted_event PASSED [ 1%] tests/command_palette/test_interaction.py::test_initial_list_no_highlight PASSED [ 1%] tests/command_palette/test_interaction.py::test_down_arrow_selects_an_item PASSED [ 1%] tests/command_palette/test_interaction.py::test_enter_selects_an_item PASSED [ 1%] tests/command_palette/test_interaction.py::test_selection_of_command_closes_command_palette PASSED [ 1%] tests/command_palette/test_no_results.py::test_no_results PASSED [ 1%] tests/command_palette/test_run_on_select.py::test_with_run_on_select_on PASSED [ 1%] tests/command_palette/test_run_on_select.py::test_with_run_on_select_off PASSED [ 1%] tests/command_palette/test_worker_interference.py::test_no_command_palette_worker_droppings PASSED [ 1%] tests/command_palette/test_worker_interference.py::test_innocent_worker_is_untouched PASSED [ 1%] tests/css/test_css_reloading.py::test_css_reloading_applies_to_non_top_screen PASSED [ 1%] tests/css/test_css_reloading.py::test_css_reloading_file_not_found PASSED [ 2%] tests/css/test_grid_rows_columns_relative_units.py::test_grid_rows_columns_relative_units_are_correct PASSED [ 2%] tests/css/test_grid_rows_columns_relative_units.py::test_styles_builder_uses_correct_relative_units_grid_rows_columns PASSED [ 2%] tests/css/test_help_text.py::test_help_text_examples_are_contextualized PASSED [ 2%] tests/css/test_help_text.py::test_spacing_wrong_number_of_values[css] PASSED [ 2%] tests/css/test_help_text.py::test_spacing_wrong_number_of_values[inline] PASSED [ 2%] tests/css/test_help_text.py::test_spacing_invalid_value[css] PASSED [ 2%] tests/css/test_help_text.py::test_spacing_invalid_value[inline] PASSED [ 2%] tests/css/test_help_text.py::test_scalar_help_text[css] PASSED [ 2%] tests/css/test_help_text.py::test_scalar_help_text[inline] PASSED [ 2%] tests/css/test_help_text.py::test_string_enum_help_text[css] PASSED [ 2%] tests/css/test_help_text.py::test_string_enum_help_text[inline] PASSED [ 2%] tests/css/test_help_text.py::test_color_property_help_text[css] PASSED [ 2%] tests/css/test_help_text.py::test_color_property_help_text[inline] PASSED [ 2%] tests/css/test_help_text.py::test_border_property_help_text[css] PASSED [ 2%] tests/css/test_help_text.py::test_border_property_help_text[inline] PASSED [ 2%] tests/css/test_help_text.py::test_layout_property_help_text[css] PASSED [ 2%] tests/css/test_help_text.py::test_layout_property_help_text[inline] PASSED [ 2%] tests/css/test_help_text.py::test_fractional_property_help_text[css] PASSED [ 2%] tests/css/test_help_text.py::test_fractional_property_help_text[inline] PASSED [ 2%] tests/css/test_help_text.py::test_offset_property_help_text[css] PASSED [ 2%] tests/css/test_help_text.py::test_offset_property_help_text[inline] PASSED [ 2%] tests/css/test_help_text.py::test_align_help_text PASSED [ 2%] tests/css/test_help_text.py::test_offset_single_axis_help_text PASSED [ 2%] tests/css/test_help_text.py::test_style_flags_property_help_text[css] PASSED [ 2%] tests/css/test_help_text.py::test_style_flags_property_help_text[inline] PASSED [ 2%] tests/css/test_inheritance.py::test_inheritance XFAIL (Overlapping styles should prioritize the most recent widget in the inheritance chain) [ 2%] tests/css/test_initial.py::test_initial_default PASSED [ 3%] tests/css/test_initial.py::test_initial PASSED [ 3%] tests/css/test_mega_stylesheet.py::test_mega_stylesheet PASSED [ 3%] tests/css/test_nested_css.py::test_nest_app PASSED [ 3%] tests/css/test_nested_css.py::test_lists_of_selectors_in_nested_css PASSED [ 3%] tests/css/test_nested_css.py::test_rule_declaration_after_nested PASSED [ 3%] tests/css/test_nested_css.py::test_parse_errors[Selector {-EOFError] PASSED [ 3%] tests/css/test_nested_css.py::test_parse_errors[Selector{ Foo {-EOFError] PASSED [ 3%] tests/css/test_nested_css.py::test_parse_errors[Selector{ Foo {}-EOFError] PASSED [ 3%] tests/css/test_nested_css.py::test_parse_errors[> {}-TokenError] PASSED [ 3%] tests/css/test_nested_css.py::test_parse_errors[&-TokenError] PASSED [ 3%] tests/css/test_nested_css.py::test_parse_errors[&&-TokenError] PASSED [ 3%] tests/css/test_nested_css.py::test_parse_errors[&.foo-TokenError] PASSED [ 3%] tests/css/test_nested_css.py::test_parse_errors[& .foo-TokenError] PASSED [ 3%] tests/css/test_nested_css.py::test_parse_errors[{-TokenError] PASSED [ 3%] tests/css/test_nested_css.py::test_parse_errors[*{-EOFError] PASSED [ 3%] tests/css/test_nested_css.py::test_pseudo_classes_work_in_nested_css PASSED [ 3%] tests/css/test_parse.py::TestVariableReferenceSubstitution::test_simple_reference PASSED [ 3%] tests/css/test_parse.py::TestVariableReferenceSubstitution::test_simple_reference_no_whitespace PASSED [ 3%] tests/css/test_parse.py::TestVariableReferenceSubstitution::test_undefined_variable PASSED [ 3%] tests/css/test_parse.py::TestVariableReferenceSubstitution::test_empty_variable PASSED [ 3%] tests/css/test_parse.py::TestVariableReferenceSubstitution::test_transitive_reference PASSED [ 3%] tests/css/test_parse.py::TestVariableReferenceSubstitution::test_multi_value_variable PASSED [ 3%] tests/css/test_parse.py::TestVariableReferenceSubstitution::test_variable_used_inside_property_value PASSED [ 3%] tests/css/test_parse.py::TestVariableReferenceSubstitution::test_variable_definition_eof PASSED [ 3%] tests/css/test_parse.py::TestVariableReferenceSubstitution::test_variable_reference_whitespace_trimming PASSED [ 3%] tests/css/test_parse.py::TestParseLayout::test_valid_layout_name PASSED [ 4%] tests/css/test_parse.py::TestParseLayout::test_invalid_layout_name PASSED [ 4%] tests/css/test_parse.py::TestParseText::test_foreground PASSED [ 4%] tests/css/test_parse.py::TestParseText::test_background PASSED [ 4%] tests/css/test_parse.py::TestParseColor::test_rgb_and_hsl[rgb(1,255,50)-result0] PASSED [ 4%] tests/css/test_parse.py::TestParseColor::test_rgb_and_hsl[rgb( 1, 255,50 )-result1] PASSED [ 4%] tests/css/test_parse.py::TestParseColor::test_rgb_and_hsl[rgba( 1, 255,50,0.3 )-result2] PASSED [ 4%] tests/css/test_parse.py::TestParseColor::test_rgb_and_hsl[rgba( 1, 255,50, 1.3 )-result3] PASSED [ 4%] tests/css/test_parse.py::TestParseColor::test_rgb_and_hsl[hsl( 180, 50%, 50% )-result4] PASSED [ 4%] tests/css/test_parse.py::TestParseColor::test_rgb_and_hsl[hsl(180,50%,50%)-result5] PASSED [ 4%] tests/css/test_parse.py::TestParseColor::test_rgb_and_hsl[hsla(180,50%,50%,0.25)-result6] PASSED [ 4%] tests/css/test_parse.py::TestParseColor::test_rgb_and_hsl[hsla( 180, 50% ,50%,0.25 )-result7] PASSED [ 4%] tests/css/test_parse.py::TestParseColor::test_rgb_and_hsl[hsla( 180, 50% , 50% , 1.5 )-result8] PASSED [ 4%] tests/css/test_parse.py::TestParseOffset::test_composite_rule[-5.5%-parsed_x0--30%-parsed_y0] PASSED [ 4%] tests/css/test_parse.py::TestParseOffset::test_composite_rule[5%-parsed_x1-40%-parsed_y1] PASSED [ 4%] tests/css/test_parse.py::TestParseOffset::test_composite_rule[10-parsed_x2-40-parsed_y2] PASSED [ 4%] tests/css/test_parse.py::TestParseOffset::test_separate_rules[-5.5%-parsed_x0--30%-parsed_y0] PASSED [ 4%] tests/css/test_parse.py::TestParseOffset::test_separate_rules[5%-parsed_x1-40%-parsed_y1] PASSED [ 4%] tests/css/test_parse.py::TestParseOffset::test_separate_rules[-10-parsed_x2-40-parsed_y2] PASSED [ 4%] tests/css/test_parse.py::TestParseOverflow::test_multiple_enum PASSED [ 4%] tests/css/test_parse.py::TestParseTransition::test_various_duration_formats[5.57s-5.57] PASSED [ 4%] tests/css/test_parse.py::TestParseTransition::test_various_duration_formats[0.5s-0.5] PASSED [ 4%] tests/css/test_parse.py::TestParseTransition::test_various_duration_formats[1200ms-1.2] PASSED [ 4%] tests/css/test_parse.py::TestParseTransition::test_various_duration_formats[0.5ms-0.0005] PASSED [ 4%] tests/css/test_parse.py::TestParseTransition::test_various_duration_formats[20-20.0] PASSED [ 4%] tests/css/test_parse.py::TestParseTransition::test_various_duration_formats[0.1-0.1] PASSED [ 4%] tests/css/test_parse.py::TestParseTransition::test_no_delay_specified PASSED [ 4%] tests/css/test_parse.py::TestParseTransition::test_unknown_easing_function PASSED [ 5%] tests/css/test_parse.py::TestParseOpacity::test_opacity_to_styles[-0.2-0.0] PASSED [ 5%] tests/css/test_parse.py::TestParseOpacity::test_opacity_to_styles[0.4-0.4] PASSED [ 5%] tests/css/test_parse.py::TestParseOpacity::test_opacity_to_styles[1.3-1.0] PASSED [ 5%] tests/css/test_parse.py::TestParseOpacity::test_opacity_to_styles[-20%-0.0] PASSED [ 5%] tests/css/test_parse.py::TestParseOpacity::test_opacity_to_styles[25%-0.25] PASSED [ 5%] tests/css/test_parse.py::TestParseOpacity::test_opacity_to_styles[128%-1.0] PASSED [ 5%] tests/css/test_parse.py::TestParseOpacity::test_opacity_invalid_value PASSED [ 5%] tests/css/test_parse.py::TestParseMargin::test_margin_partial PASSED [ 5%] tests/css/test_parse.py::TestParsePadding::test_padding_partial PASSED [ 5%] tests/css/test_parse.py::TestParseTextAlign::test_text_align[left] PASSED [ 5%] tests/css/test_parse.py::TestParseTextAlign::test_text_align[start] PASSED [ 5%] tests/css/test_parse.py::TestParseTextAlign::test_text_align[center] PASSED [ 5%] tests/css/test_parse.py::TestParseTextAlign::test_text_align[right] PASSED [ 5%] tests/css/test_parse.py::TestParseTextAlign::test_text_align[end] PASSED [ 5%] tests/css/test_parse.py::TestParseTextAlign::test_text_align[justify] PASSED [ 5%] tests/css/test_parse.py::TestParseTextAlign::test_text_align_invalid PASSED [ 5%] tests/css/test_parse.py::TestTypeNames::test_type_no_number PASSED [ 5%] tests/css/test_parse.py::TestTypeNames::test_type_with_number PASSED [ 5%] tests/css/test_parse.py::TestTypeNames::test_type_starts_with_number PASSED [ 5%] tests/css/test_parse.py::TestTypeNames::test_combined_type_no_number PASSED [ 5%] tests/css/test_parse.py::TestTypeNames::test_combined_type_with_number PASSED [ 5%] tests/css/test_parse.py::TestTypeNames::test_combined_type_starts_with_number PASSED [ 5%] tests/css/test_parse.py::test_parse_bad_pseudo_selector PASSED [ 5%] tests/css/test_parse.py::test_parse_bad_pseudo_selector_with_suggestion PASSED [ 5%] tests/css/test_programmatic_style_changes.py::test_programmatic_style_change_updates_children[grid_size_rows-3] PASSED [ 5%] tests/css/test_programmatic_style_changes.py::test_programmatic_style_change_updates_children[grid_size_columns-3] PASSED [ 5%] tests/css/test_programmatic_style_changes.py::test_programmatic_style_change_updates_children[grid_gutter_vertical-4] PASSED [ 6%] tests/css/test_programmatic_style_changes.py::test_programmatic_style_change_updates_children[grid_gutter_horizontal-4] PASSED [ 6%] tests/css/test_programmatic_style_changes.py::test_programmatic_style_change_updates_children[grid_rows-1fr 3fr] PASSED [ 6%] tests/css/test_programmatic_style_changes.py::test_programmatic_style_change_updates_children[grid_columns-1fr 3fr] PASSED [ 6%] tests/css/test_programmatic_style_changes.py::test_programmatic_align_change_updates_children_position[align_horizontal-right] PASSED [ 6%] tests/css/test_programmatic_style_changes.py::test_programmatic_align_change_updates_children_position[align_vertical-bottom] PASSED [ 6%] tests/css/test_programmatic_style_changes.py::test_programmatic_align_change_updates_children_position[align-value2] PASSED [ 6%] tests/css/test_scalar.py::test_copy_with_value PASSED [ 6%] tests/css/test_scalar.py::test_copy_with_unit PASSED [ 6%] tests/css/test_scalar.py::test_copy_with_percent_unit PASSED [ 6%] tests/css/test_screen_css.py::test_screen_pushing_and_popping_does_not_reparse_css PASSED [ 6%] tests/css/test_screen_css.py::test_screen_css_push_screen_instance PASSED [ 6%] tests/css/test_screen_css.py::test_screen_css_push_screen_instance_by_name PASSED [ 6%] tests/css/test_screen_css.py::test_screen_css_push_screen_type_by_name PASSED [ 6%] tests/css/test_screen_css.py::test_screen_css_switch_screen_instance PASSED [ 6%] tests/css/test_screen_css.py::test_screen_css_switch_screen_instance_by_name PASSED [ 6%] tests/css/test_screen_css.py::test_screen_css_switch_screen_type_by_name PASSED [ 6%] tests/css/test_screen_css.py::test_screen_css_switch_mode_screen_instance PASSED [ 6%] tests/css/test_screen_css.py::test_screen_css_switch_mode_screen_instance_by_name PASSED [ 6%] tests/css/test_screen_css.py::test_screen_css_switch_mode_screen_type_by_name PASSED [ 6%] tests/css/test_styles.py::test_styles_reset PASSED [ 6%] tests/css/test_styles.py::test_has_rule PASSED [ 6%] tests/css/test_styles.py::test_clear_rule PASSED [ 6%] tests/css/test_styles.py::test_get_rules PASSED [ 6%] tests/css/test_styles.py::test_set_rule PASSED [ 6%] tests/css/test_styles.py::test_reset PASSED [ 6%] tests/css/test_styles.py::test_merge PASSED [ 6%] tests/css/test_styles.py::test_merge_rules PASSED [ 7%] tests/css/test_styles.py::test_render_styles_border PASSED [ 7%] tests/css/test_styles.py::test_get_opacity_default PASSED [ 7%] tests/css/test_styles.py::test_styles_css_property PASSED [ 7%] tests/css/test_styles.py::test_opacity_set_then_get[0.2-0.2] PASSED [ 7%] tests/css/test_styles.py::test_opacity_set_then_get[-0.4-0.0] PASSED [ 7%] tests/css/test_styles.py::test_opacity_set_then_get[5.8-1.0] PASSED [ 7%] tests/css/test_styles.py::test_opacity_set_then_get[25%-0.25] PASSED [ 7%] tests/css/test_styles.py::test_opacity_set_then_get[-10%-0.0] PASSED [ 7%] tests/css/test_styles.py::test_opacity_set_then_get[120%-1.0] PASSED [ 7%] tests/css/test_styles.py::test_opacity_set_invalid_type_error PASSED [ 7%] tests/css/test_styles.py::test_opacity_set_allows_integer_value PASSED [ 7%] tests/css/test_styles.py::test_widget_style_size_can_accept_various_data_types_and_normalize_them[None-None] PASSED [ 7%] tests/css/test_styles.py::test_widget_style_size_can_accept_various_data_types_and_normalize_them[1-size_dimension_expected_output1] PASSED [ 7%] tests/css/test_styles.py::test_widget_style_size_can_accept_various_data_types_and_normalize_them[1.0-size_dimension_expected_output2] PASSED [ 7%] tests/css/test_styles.py::test_widget_style_size_can_accept_various_data_types_and_normalize_them[1.2-size_dimension_expected_output3] PASSED [ 7%] tests/css/test_styles.py::test_widget_style_size_can_accept_various_data_types_and_normalize_them[1200.0-size_dimension_expected_output4] PASSED [ 7%] tests/css/test_styles.py::test_widget_style_size_can_accept_various_data_types_and_normalize_them[20-size_dimension_expected_output5] PASSED [ 7%] tests/css/test_styles.py::test_widget_style_size_can_accept_various_data_types_and_normalize_them[1.4-size_dimension_expected_output6] PASSED [ 7%] tests/css/test_styles.py::test_widget_style_size_can_accept_various_data_types_and_normalize_them[size_dimension_input7-size_dimension_expected_output7] PASSED [ 7%] tests/css/test_styles.py::test_widget_style_size_can_accept_various_data_types_and_normalize_them[size_dimension_input8-size_dimension_expected_output8] PASSED [ 7%] tests/css/test_styles.py::test_widget_style_size_can_accept_various_data_types_and_normalize_them[size_dimension_input9-size_dimension_expected_output9] PASSED [ 7%] tests/css/test_styles.py::test_widget_style_size_can_accept_various_data_types_and_normalize_them[size_dimension_input10-size_dimension_expected_output10] PASSED [ 7%] tests/css/test_styles.py::test_widget_style_size_can_accept_various_data_types_and_normalize_them[size_dimension_input11-size_dimension_expected_output11] PASSED [ 7%] tests/css/test_styles.py::test_widget_style_size_can_accept_various_data_types_and_normalize_them[size_dimension_input12-size_dimension_expected_output12] PASSED [ 7%] tests/css/test_styles.py::test_widget_style_size_can_accept_various_data_types_and_normalize_them[size_dimension_input13-size_dimension_expected_output13] PASSED [ 7%] tests/css/test_styles.py::test_widget_style_size_fails_if_data_type_is_not_supported[a] PASSED [ 8%] tests/css/test_styles.py::test_widget_style_size_fails_if_data_type_is_not_supported[1.4e3] PASSED [ 8%] tests/css/test_styles.py::test_widget_style_size_fails_if_data_type_is_not_supported[3.14j] PASSED [ 8%] tests/css/test_styles.py::test_widget_style_size_fails_if_data_type_is_not_supported[size_dimension_input3] PASSED [ 8%] tests/css/test_styles.py::test_widget_style_size_fails_if_data_type_is_not_supported[size_dimension_input4] PASSED [ 8%] tests/css/test_styles.py::test_widget_style_size_fails_if_data_type_is_not_supported[size_dimension_input5] PASSED [ 8%] tests/css/test_styles.py::test_widget_style_size_fails_if_data_type_is_not_supported[size_dimension_input6] PASSED [ 8%] tests/css/test_stylesheet.py::test_stylesheet_apply_highest_specificity_wins PASSED [ 8%] tests/css/test_stylesheet.py::test_stylesheet_apply_doesnt_override_defaults PASSED [ 8%] tests/css/test_stylesheet.py::test_stylesheet_apply_highest_specificity_wins_multiple_classes PASSED [ 8%] tests/css/test_stylesheet.py::test_stylesheet_many_classes_dont_overrule_id PASSED [ 8%] tests/css/test_stylesheet.py::test_stylesheet_last_rule_wins_when_same_rule_twice_in_one_ruleset PASSED [ 8%] tests/css/test_stylesheet.py::test_stylesheet_rulesets_merged_for_duplicate_selectors PASSED [ 8%] tests/css/test_stylesheet.py::test_stylesheet_apply_takes_final_rule_in_specificity_clash PASSED [ 8%] tests/css/test_stylesheet.py::test_stylesheet_apply_empty_rulesets PASSED [ 8%] tests/css/test_stylesheet.py::test_stylesheet_apply_user_css_over_widget_css PASSED [ 8%] tests/css/test_stylesheet.py::test_color_property_parsing[transparent-expectation0-expected_color0] PASSED [ 8%] tests/css/test_stylesheet.py::test_color_property_parsing[ansi_red-expectation1-expected_color1] PASSED [ 8%] tests/css/test_stylesheet.py::test_color_property_parsing[ansi_bright_magenta-expectation2-expected_color2] PASSED [ 8%] tests/css/test_stylesheet.py::test_color_property_parsing[red-expectation3-expected_color3] PASSED [ 8%] tests/css/test_stylesheet.py::test_color_property_parsing[lime-expectation4-expected_color4] PASSED [ 8%] tests/css/test_stylesheet.py::test_color_property_parsing[coral-expectation5-expected_color5] PASSED [ 8%] tests/css/test_stylesheet.py::test_color_property_parsing[aqua-expectation6-expected_color6] PASSED [ 8%] tests/css/test_stylesheet.py::test_color_property_parsing[deepskyblue-expectation7-expected_color7] PASSED [ 8%] tests/css/test_stylesheet.py::test_color_property_parsing[rebeccapurple-expectation8-expected_color8] PASSED [ 8%] tests/css/test_stylesheet.py::test_color_property_parsing[#ffcc00-expectation9-expected_color9] PASSED [ 8%] tests/css/test_stylesheet.py::test_color_property_parsing[#ffcc0033-expectation10-expected_color10] PASSED [ 8%] tests/css/test_stylesheet.py::test_color_property_parsing[rgb(200,90,30)-expectation11-expected_color11] PASSED [ 9%] tests/css/test_stylesheet.py::test_color_property_parsing[rgba(200,90,30,0.3)-expectation12-expected_color12] PASSED [ 9%] tests/css/test_stylesheet.py::test_color_property_parsing[coffee-expectation13-None] PASSED [ 9%] tests/css/test_stylesheet.py::test_color_property_parsing[ansi_dark_cyan-expectation14-None] PASSED [ 9%] tests/css/test_stylesheet.py::test_color_property_parsing[red 4-expectation15-None] PASSED [ 9%] tests/css/test_stylesheet.py::test_color_property_parsing[1-expectation16-None] PASSED [ 9%] tests/css/test_stylesheet.py::test_color_property_parsing[()-expectation17-None] PASSED [ 9%] tests/css/test_stylesheet.py::test_did_you_mean_for_css_property_names[backgroundu-background] PASSED [ 9%] tests/css/test_stylesheet.py::test_did_you_mean_for_css_property_names[bckgroundu-background] PASSED [ 9%] tests/css/test_stylesheet.py::test_did_you_mean_for_css_property_names[ofset-x-offset-x] PASSED [ 9%] tests/css/test_stylesheet.py::test_did_you_mean_for_css_property_names[ofst_y-offset-y] PASSED [ 9%] tests/css/test_stylesheet.py::test_did_you_mean_for_css_property_names[colr-color] PASSED [ 9%] tests/css/test_stylesheet.py::test_did_you_mean_for_css_property_names[colour-color] PASSED [ 9%] tests/css/test_stylesheet.py::test_did_you_mean_for_css_property_names[wdth-width] PASSED [ 9%] tests/css/test_stylesheet.py::test_did_you_mean_for_css_property_names[wth-width] PASSED [ 9%] tests/css/test_stylesheet.py::test_did_you_mean_for_css_property_names[wh-None] PASSED [ 9%] tests/css/test_stylesheet.py::test_did_you_mean_for_css_property_names[xkcd-None] PASSED [ 9%] tests/css/test_stylesheet.py::test_did_you_mean_for_property_names_in_nested_css[backgroundu-background] PASSED [ 9%] tests/css/test_stylesheet.py::test_did_you_mean_for_property_names_in_nested_css[bckgroundu-background] PASSED [ 9%] tests/css/test_stylesheet.py::test_did_you_mean_for_property_names_in_nested_css[ofset-x-offset-x] PASSED [ 9%] tests/css/test_stylesheet.py::test_did_you_mean_for_property_names_in_nested_css[ofst_y-offset-y] PASSED [ 9%] tests/css/test_stylesheet.py::test_did_you_mean_for_property_names_in_nested_css[colr-color] PASSED [ 9%] tests/css/test_stylesheet.py::test_did_you_mean_for_property_names_in_nested_css[colour-color] PASSED [ 9%] tests/css/test_stylesheet.py::test_did_you_mean_for_property_names_in_nested_css[wdth-width] PASSED [ 9%] tests/css/test_stylesheet.py::test_did_you_mean_for_property_names_in_nested_css[wth-width] PASSED [ 9%] tests/css/test_stylesheet.py::test_did_you_mean_for_property_names_in_nested_css[wh-None] PASSED [ 9%] tests/css/test_stylesheet.py::test_did_you_mean_for_property_names_in_nested_css[xkcd-None] PASSED [ 9%] tests/css/test_stylesheet.py::test_did_you_mean_for_color_names[color-blu-blue] PASSED [ 10%] tests/css/test_stylesheet.py::test_did_you_mean_for_color_names[background-chartruse-chartreuse] PASSED [ 10%] tests/css/test_stylesheet.py::test_did_you_mean_for_color_names[tint-ansi_whi-ansi_white] PASSED [ 10%] tests/css/test_stylesheet.py::test_did_you_mean_for_color_names[scrollbar-color-transprnt-transparent] PASSED [ 10%] tests/css/test_stylesheet.py::test_did_you_mean_for_color_names[color-xkcd-None] PASSED [ 10%] tests/css/test_tokenize.py::test_variable_declaration_valid_names[warning-text] PASSED [ 10%] tests/css/test_tokenize.py::test_variable_declaration_valid_names[warning_text] PASSED [ 10%] tests/css/test_tokenize.py::test_variable_declaration_valid_names[warningtext1] PASSED [ 10%] tests/css/test_tokenize.py::test_variable_declaration_valid_names[1warningtext] PASSED [ 10%] tests/css/test_tokenize.py::test_variable_declaration_valid_names[WarningText1] PASSED [ 10%] tests/css/test_tokenize.py::test_variable_declaration_valid_names[warningtext_] PASSED [ 10%] tests/css/test_tokenize.py::test_variable_declaration_valid_names[warningtext-] PASSED [ 10%] tests/css/test_tokenize.py::test_variable_declaration_valid_names[_warningtext] PASSED [ 10%] tests/css/test_tokenize.py::test_variable_declaration_valid_names[-warningtext] PASSED [ 10%] tests/css/test_tokenize.py::test_variable_declaration_multiple_values PASSED [ 10%] tests/css/test_tokenize.py::test_single_line_comment PASSED [ 10%] tests/css/test_tokenize.py::test_variable_declaration_comment_ignored PASSED [ 10%] tests/css/test_tokenize.py::test_variable_declaration_comment_interspersed_ignored PASSED [ 10%] tests/css/test_tokenize.py::test_variable_declaration_no_semicolon PASSED [ 10%] tests/css/test_tokenize.py::test_variable_declaration_invalid_value PASSED [ 10%] tests/css/test_tokenize.py::test_variables_declarations_amongst_rulesets PASSED [ 10%] tests/css/test_tokenize.py::test_variables_reference_in_rule_declaration_value PASSED [ 10%] tests/css/test_tokenize.py::test_variables_reference_in_rule_declaration_value_multiple PASSED [ 10%] tests/css/test_tokenize.py::test_variables_reference_in_variable_declaration PASSED [ 10%] tests/css/test_tokenize.py::test_variable_references_in_variable_declaration_multiple PASSED [ 10%] tests/css/test_tokenize.py::test_allow_new_lines PASSED [ 10%] tests/css/test_tokenize.py::test_did_you_mean_pseudo_classes[blue-blur] PASSED [ 10%] tests/css/test_tokenize.py::test_did_you_mean_pseudo_classes[br-blur] PASSED [ 11%] tests/css/test_tokenize.py::test_did_you_mean_pseudo_classes[canfocus-can-focus] PASSED [ 11%] tests/css/test_tokenize.py::test_did_you_mean_pseudo_classes[can_focus-can-focus] PASSED [ 11%] tests/css/test_tokenize.py::test_did_you_mean_pseudo_classes[can-foc-can-focus] PASSED [ 11%] tests/css/test_tokenize.py::test_did_you_mean_pseudo_classes[drk-dark] PASSED [ 11%] tests/css/test_tokenize.py::test_did_you_mean_pseudo_classes[ark-dark] PASSED [ 11%] tests/css/test_tokenize.py::test_did_you_mean_pseudo_classes[disssabled-disabled] PASSED [ 11%] tests/css/test_tokenize.py::test_did_you_mean_pseudo_classes[enalbed-enabled] PASSED [ 11%] tests/css/test_tokenize.py::test_did_you_mean_pseudo_classes[focoswithin-focus-within] PASSED [ 11%] tests/css/test_tokenize.py::test_did_you_mean_pseudo_classes[focus_whitin-focus-within] PASSED [ 11%] tests/css/test_tokenize.py::test_did_you_mean_pseudo_classes[fcus-focus] PASSED [ 11%] tests/css/test_tokenize.py::test_did_you_mean_pseudo_classes[huver-hover] PASSED [ 11%] tests/css/test_tokenize.py::test_did_you_mean_pseudo_classes[LIght-light] PASSED [ 11%] tests/css/test_tokenize.py::test_did_you_mean_pseudo_classes_in_nested_css[blue-blur] PASSED [ 11%] tests/css/test_tokenize.py::test_did_you_mean_pseudo_classes_in_nested_css[br-blur] PASSED [ 11%] tests/css/test_tokenize.py::test_did_you_mean_pseudo_classes_in_nested_css[canfocus-can-focus] PASSED [ 11%] tests/css/test_tokenize.py::test_did_you_mean_pseudo_classes_in_nested_css[can_focus-can-focus] PASSED [ 11%] tests/css/test_tokenize.py::test_did_you_mean_pseudo_classes_in_nested_css[can-foc-can-focus] PASSED [ 11%] tests/css/test_tokenize.py::test_did_you_mean_pseudo_classes_in_nested_css[drk-dark] PASSED [ 11%] tests/css/test_tokenize.py::test_did_you_mean_pseudo_classes_in_nested_css[ark-dark] PASSED [ 11%] tests/css/test_tokenize.py::test_did_you_mean_pseudo_classes_in_nested_css[disssabled-disabled] PASSED [ 11%] tests/css/test_tokenize.py::test_did_you_mean_pseudo_classes_in_nested_css[enalbed-enabled] PASSED [ 11%] tests/css/test_tokenize.py::test_did_you_mean_pseudo_classes_in_nested_css[focoswithin-focus-within] PASSED [ 11%] tests/css/test_tokenize.py::test_did_you_mean_pseudo_classes_in_nested_css[focus_whitin-focus-within] PASSED [ 11%] tests/css/test_tokenize.py::test_did_you_mean_pseudo_classes_in_nested_css[fcus-focus] PASSED [ 11%] tests/css/test_tokenize.py::test_did_you_mean_pseudo_classes_in_nested_css[huver-hover] PASSED [ 11%] tests/css/test_tokenize.py::test_did_you_mean_pseudo_classes_in_nested_css[LIght-light] PASSED [ 12%] tests/directory_tree/test_change_path.py::test_change_directory_tree_path PASSED [ 12%] tests/directory_tree/test_early_show_root.py::test_managed_to_set_show_root_before_mounted PASSED [ 12%] tests/document/test_document.py::test_text[I must not fear.\nFear is the mind-killer.] PASSED [ 12%] tests/document/test_document.py::test_text[I must not fear.\nFear is the mind-killer.\n] PASSED [ 12%] tests/document/test_document.py::test_text[I must not fear.\r\nFear is the mind-killer.] PASSED [ 12%] tests/document/test_document.py::test_text[I must not fear.\r\nFear is the mind-killer.\r\n] PASSED [ 12%] tests/document/test_document.py::test_lines_newline_eof PASSED [ 12%] tests/document/test_document.py::test_lines_no_newline_eof PASSED [ 12%] tests/document/test_document.py::test_lines_windows PASSED [ 12%] tests/document/test_document.py::test_lines_windows_newline PASSED [ 12%] tests/document/test_document.py::test_newline_unix PASSED [ 12%] tests/document/test_document.py::test_newline_windows PASSED [ 12%] tests/document/test_document.py::test_get_selected_text_no_selection PASSED [ 12%] tests/document/test_document.py::test_get_selected_text_single_line PASSED [ 12%] tests/document/test_document.py::test_get_selected_text_multiple_lines_unix PASSED [ 12%] tests/document/test_document.py::test_get_selected_text_multiple_lines_windows PASSED [ 12%] tests/document/test_document.py::test_get_selected_text_including_final_newline_unix PASSED [ 12%] tests/document/test_document.py::test_get_selected_text_including_final_newline_windows PASSED [ 12%] tests/document/test_document.py::test_get_selected_text_no_newline_at_end_of_file PASSED [ 12%] tests/document/test_document.py::test_get_selected_text_no_newline_at_end_of_file_windows PASSED [ 12%] tests/document/test_document.py::test_index_from_location[I must not fear.\nFear is the mind-killer.] PASSED [ 12%] tests/document/test_document.py::test_index_from_location[I must not fear.\nFear is the mind-killer.\n] PASSED [ 12%] tests/document/test_document.py::test_index_from_location[I must not fear.\r\nFear is the mind-killer.] PASSED [ 12%] tests/document/test_document.py::test_index_from_location[I must not fear.\r\nFear is the mind-killer.\r\n] PASSED [ 12%] tests/document/test_document.py::test_location_from_index[I must not fear.\nFear is the mind-killer.] PASSED [ 12%] tests/document/test_document.py::test_location_from_index[I must not fear.\nFear is the mind-killer.\n] PASSED [ 12%] tests/document/test_document.py::test_location_from_index[I must not fear.\r\nFear is the mind-killer.] PASSED [ 13%] tests/document/test_document.py::test_location_from_index[I must not fear.\r\nFear is the mind-killer.\r\n] PASSED [ 13%] tests/document/test_document.py::test_document_end[I must not fear.\nFear is the mind-killer.] PASSED [ 13%] tests/document/test_document.py::test_document_end[I must not fear.\nFear is the mind-killer.\n] PASSED [ 13%] tests/document/test_document.py::test_document_end[I must not fear.\r\nFear is the mind-killer.] PASSED [ 13%] tests/document/test_document.py::test_document_end[I must not fear.\r\nFear is the mind-killer.\r\n] PASSED [ 13%] tests/document/test_document_delete.py::test_delete_single_character PASSED [ 13%] tests/document/test_document_delete.py::test_delete_single_newline PASSED [ 13%] tests/document/test_document_delete.py::test_delete_near_end_of_document PASSED [ 13%] tests/document/test_document_delete.py::test_delete_clearing_the_document PASSED [ 13%] tests/document/test_document_delete.py::test_delete_multiple_characters_on_one_line PASSED [ 13%] tests/document/test_document_delete.py::test_delete_multiple_lines_partially_spanned PASSED [ 13%] tests/document/test_document_delete.py::test_delete_end_of_line PASSED [ 13%] tests/document/test_document_delete.py::test_delete_single_line_excluding_newline PASSED [ 13%] tests/document/test_document_delete.py::test_delete_single_line_including_newline PASSED [ 13%] tests/document/test_document_delete.py::test_delete_end_of_file_newline PASSED [ 13%] tests/document/test_document_insert.py::test_insert_no_newlines PASSED [ 13%] tests/document/test_document_insert.py::test_insert_empty_string PASSED [ 13%] tests/document/test_document_insert.py::test_insert_invalid_column PASSED [ 13%] tests/document/test_document_insert.py::test_insert_invalid_row_and_column PASSED [ 13%] tests/document/test_document_insert.py::test_insert_range_newline_file_start PASSED [ 13%] tests/document/test_document_insert.py::test_insert_newline_splits_line PASSED [ 13%] tests/document/test_document_insert.py::test_insert_newline_splits_line_selection PASSED [ 13%] tests/document/test_document_insert.py::test_insert_multiple_lines_ends_with_newline PASSED [ 13%] tests/document/test_document_insert.py::test_insert_multiple_lines_ends_with_no_newline PASSED [ 13%] tests/document/test_document_insert.py::test_insert_multiple_lines_starts_with_newline PASSED [ 13%] tests/document/test_document_insert.py::test_insert_range_text_no_newlines PASSED [ 13%] tests/document/test_document_insert.py::test_newline_eof PASSED [ 14%] tests/document/test_document_navigator.py::test_get_location_above[start0-end0] PASSED [ 14%] tests/document/test_document_navigator.py::test_get_location_above[start1-end1] PASSED [ 14%] tests/document/test_document_navigator.py::test_get_location_above[start2-end2] PASSED [ 14%] tests/document/test_document_navigator.py::test_get_location_above[start3-end3] PASSED [ 14%] tests/document/test_document_navigator.py::test_get_location_above[start4-end4] PASSED [ 14%] tests/document/test_document_navigator.py::test_get_location_above[start5-end5] PASSED [ 14%] tests/document/test_document_navigator.py::test_get_location_above[start6-end6] PASSED [ 14%] tests/document/test_document_navigator.py::test_get_location_above[start7-end7] PASSED [ 14%] tests/document/test_document_navigator.py::test_get_location_above[start8-end8] PASSED [ 14%] tests/document/test_document_navigator.py::test_get_location_above[start9-end9] PASSED [ 14%] tests/document/test_document_navigator.py::test_get_location_above[start10-end10] PASSED [ 14%] tests/document/test_document_navigator.py::test_get_location_below[start0-end0] PASSED [ 14%] tests/document/test_document_navigator.py::test_get_location_below[start1-end1] PASSED [ 14%] tests/document/test_document_navigator.py::test_get_location_below[start2-end2] PASSED [ 14%] tests/document/test_document_navigator.py::test_get_location_below[start3-end3] PASSED [ 14%] tests/document/test_document_navigator.py::test_get_location_below[start4-end4] PASSED [ 14%] tests/document/test_document_navigator.py::test_get_location_below[start5-end5] PASSED [ 14%] tests/document/test_document_navigator.py::test_get_location_below[start6-end6] PASSED [ 14%] tests/document/test_document_navigator.py::test_get_location_below[start7-end7] PASSED [ 14%] tests/document/test_document_navigator.py::test_get_location_below[start8-end8] PASSED [ 14%] tests/document/test_document_navigator.py::test_get_location_home[start0-end0] PASSED [ 14%] tests/document/test_document_navigator.py::test_get_location_home[start1-end1] PASSED [ 14%] tests/document/test_document_navigator.py::test_get_location_home[start2-end2] PASSED [ 14%] tests/document/test_document_navigator.py::test_get_location_home[start3-end3] PASSED [ 14%] tests/document/test_document_navigator.py::test_get_location_home[start4-end4] PASSED [ 14%] tests/document/test_document_navigator.py::test_get_location_home[start5-end5] PASSED [ 14%] tests/document/test_document_navigator.py::test_get_location_home[start6-end6] PASSED [ 15%] tests/document/test_document_navigator.py::test_get_location_home[start7-end7] PASSED [ 15%] tests/document/test_document_navigator.py::test_get_location_home[start8-end8] PASSED [ 15%] tests/document/test_document_navigator.py::test_get_location_end[start0-end0] PASSED [ 15%] tests/document/test_document_navigator.py::test_get_location_end[start1-end1] PASSED [ 15%] tests/document/test_document_navigator.py::test_get_location_end[start2-end2] PASSED [ 15%] tests/document/test_document_navigator.py::test_get_location_end[start3-end3] PASSED [ 15%] tests/document/test_document_navigator.py::test_get_location_end[start4-end4] PASSED [ 15%] tests/document/test_wrapped_document.py::test_wrap PASSED [ 15%] tests/document/test_wrapped_document.py::test_wrap_empty_document PASSED [ 15%] tests/document/test_wrapped_document.py::test_wrap_width_zero_no_wrapping PASSED [ 15%] tests/document/test_wrapped_document.py::test_refresh_range PASSED [ 15%] tests/document/test_wrapped_document.py::test_refresh_range_new_text_wrapped PASSED [ 15%] tests/document/test_wrapped_document.py::test_refresh_range_wrapping_at_previously_unavailable_range PASSED [ 15%] tests/document/test_wrapped_document.py::test_refresh_range_wrapping_disabled_previously_unavailable_range PASSED [ 15%] tests/document/test_wrapped_document.py::test_offset_to_location_wrapping_enabled[offset0-location0] PASSED [ 15%] tests/document/test_wrapped_document.py::test_offset_to_location_wrapping_enabled[offset1-location1] PASSED [ 15%] tests/document/test_wrapped_document.py::test_offset_to_location_wrapping_enabled[offset2-location2] PASSED [ 15%] tests/document/test_wrapped_document.py::test_offset_to_location_wrapping_enabled[offset3-location3] PASSED [ 15%] tests/document/test_wrapped_document.py::test_offset_to_location_wrapping_enabled[offset4-location4] PASSED [ 15%] tests/document/test_wrapped_document.py::test_offset_to_location_wrapping_enabled[offset5-location5] PASSED [ 15%] tests/document/test_wrapped_document.py::test_offset_to_location_wrapping_enabled[offset6-location6] PASSED [ 15%] tests/document/test_wrapped_document.py::test_offset_to_location_wrapping_enabled[offset7-location7] PASSED [ 15%] tests/document/test_wrapped_document.py::test_offset_to_location_wrapping_enabled[offset8-location8] PASSED [ 15%] tests/document/test_wrapped_document.py::test_offset_to_location_wrapping_disabled[offset0-location0] PASSED [ 15%] tests/document/test_wrapped_document.py::test_offset_to_location_wrapping_disabled[offset1-location1] PASSED [ 15%] tests/document/test_wrapped_document.py::test_offset_to_location_wrapping_disabled[offset2-location2] PASSED [ 16%] tests/document/test_wrapped_document.py::test_offset_to_location_wrapping_disabled[offset3-location3] PASSED [ 16%] tests/document/test_wrapped_document.py::test_offset_to_location_wrapping_disabled[offset4-location4] PASSED [ 16%] tests/document/test_wrapped_document.py::test_offset_to_location_wrapping_disabled[offset5-location5] PASSED [ 16%] tests/document/test_wrapped_document.py::test_offset_to_location_wrapping_disabled[offset6-location6] PASSED [ 16%] tests/document/test_wrapped_document.py::test_offset_to_location_invalid_offset_clamps_to_valid_offset[offset0-location0] PASSED [ 16%] tests/document/test_wrapped_document.py::test_offset_to_location_invalid_offset_clamps_to_valid_offset[offset1-location1] PASSED [ 16%] tests/document/test_wrapped_document.py::test_get_offsets[0-offsets0] PASSED [ 16%] tests/document/test_wrapped_document.py::test_get_offsets[1-offsets1] PASSED [ 16%] tests/document/test_wrapped_document.py::test_get_offsets[2-offsets2] PASSED [ 16%] tests/document/test_wrapped_document.py::test_get_offsets_no_wrapping PASSED [ 16%] tests/document/test_wrapped_document.py::test_get_offsets_invalid_line_index[-4] PASSED [ 16%] tests/document/test_wrapped_document.py::test_get_offsets_invalid_line_index[10000] PASSED [ 16%] tests/footer/test_footer.py::test_footer_bindings PASSED [ 16%] tests/input/test_input_clear.py::test_input_clear PASSED [ 16%] tests/input/test_input_key_modification_actions.py::test_delete_left_from_home PASSED [ 16%] tests/input/test_input_key_modification_actions.py::test_delete_left_from_end PASSED [ 16%] tests/input/test_input_key_modification_actions.py::test_delete_left_word_from_home PASSED [ 16%] tests/input/test_input_key_modification_actions.py::test_delete_left_word_from_inside_first_word PASSED [ 16%] tests/input/test_input_key_modification_actions.py::test_delete_left_word_from_end PASSED [ 16%] tests/input/test_input_key_modification_actions.py::test_password_delete_left_word_from_end PASSED [ 16%] tests/input/test_input_key_modification_actions.py::test_delete_left_all_from_home PASSED [ 16%] tests/input/test_input_key_modification_actions.py::test_delete_left_all_from_end PASSED [ 16%] tests/input/test_input_key_modification_actions.py::test_delete_right_from_home PASSED [ 16%] tests/input/test_input_key_modification_actions.py::test_delete_right_from_end PASSED [ 16%] tests/input/test_input_key_modification_actions.py::test_delete_right_word_from_home PASSED [ 16%] tests/input/test_input_key_modification_actions.py::test_password_delete_right_word_from_home PASSED [ 16%] tests/input/test_input_key_modification_actions.py::test_delete_right_word_from_end PASSED [ 17%] tests/input/test_input_key_modification_actions.py::test_delete_right_all_from_home PASSED [ 17%] tests/input/test_input_key_modification_actions.py::test_delete_right_all_from_end PASSED [ 17%] tests/input/test_input_key_movement_actions.py::test_input_home PASSED [ 17%] tests/input/test_input_key_movement_actions.py::test_input_end PASSED [ 17%] tests/input/test_input_key_movement_actions.py::test_input_right_from_home PASSED [ 17%] tests/input/test_input_key_movement_actions.py::test_input_right_from_end PASSED [ 17%] tests/input/test_input_key_movement_actions.py::test_input_left_from_home PASSED [ 17%] tests/input/test_input_key_movement_actions.py::test_input_left_from_end PASSED [ 17%] tests/input/test_input_key_movement_actions.py::test_input_left_word_from_home PASSED [ 17%] tests/input/test_input_key_movement_actions.py::test_input_left_word_from_end PASSED [ 17%] tests/input/test_input_key_movement_actions.py::test_password_input_left_word_from_end PASSED [ 17%] tests/input/test_input_key_movement_actions.py::test_input_right_word_from_home PASSED [ 17%] tests/input/test_input_key_movement_actions.py::test_password_input_right_word_from_home PASSED [ 17%] tests/input/test_input_key_movement_actions.py::test_input_right_word_from_end PASSED [ 17%] tests/input/test_input_key_movement_actions.py::test_input_right_word_to_the_end PASSED [ 17%] tests/input/test_input_key_movement_actions.py::test_input_left_word_from_the_end PASSED [ 17%] tests/input/test_input_messages.py::test_no_startup_messages PASSED [ 17%] tests/input/test_input_messages.py::test_startup_messages_with_initial_value PASSED [ 17%] tests/input/test_input_messages.py::test_typing_from_empty_causes_changed PASSED [ 17%] tests/input/test_input_messages.py::test_typing_from_pre_populated_causes_changed PASSED [ 17%] tests/input/test_input_messages.py::test_submit_empty_input PASSED [ 17%] tests/input/test_input_messages.py::test_submit_pre_populated_input PASSED [ 17%] tests/input/test_input_messages.py::test_paste_event_impact PASSED [ 17%] tests/input/test_input_mouse.py::test_mouse_clicks_within[That gum you like is going to come back in style-0-0] PASSED [ 17%] tests/input/test_input_mouse.py::test_mouse_clicks_within[That gum you like is going to come back in style-1-1] PASSED [ 17%] tests/input/test_input_mouse.py::test_mouse_clicks_within[That gum you like is going to come back in style-10-10] PASSED [ 17%] tests/input/test_input_mouse.py::test_mouse_clicks_within[That gum you like is going to come back in style-47-47] PASSED [ 18%] tests/input/test_input_mouse.py::test_mouse_clicks_within[That gum you like is going to come back in style-48-48] PASSED [ 18%] tests/input/test_input_mouse.py::test_mouse_clicks_within[That gum you like is going to come back in style-58-48] PASSED [ 18%] tests/input/test_input_mouse.py::test_mouse_clicks_within[\u3053\u3093\u306b\u3061\u306f-0-0] PASSED [ 18%] tests/input/test_input_mouse.py::test_mouse_clicks_within[\u3053\u3093\u306b\u3061\u306f-1-0] PASSED [ 18%] tests/input/test_input_mouse.py::test_mouse_clicks_within[\u3053\u3093\u306b\u3061\u306f-2-1] PASSED [ 18%] tests/input/test_input_mouse.py::test_mouse_clicks_within[\u3053\u3093\u306b\u3061\u306f-3-1] PASSED [ 18%] tests/input/test_input_mouse.py::test_mouse_clicks_within[\u3053\u3093\u306b\u3061\u306f-4-2] PASSED [ 18%] tests/input/test_input_mouse.py::test_mouse_clicks_within[\u3053\u3093\u306b\u3061\u306f-5-2] PASSED [ 18%] tests/input/test_input_mouse.py::test_mouse_clicks_within[\u3053\u3093\u306b\u3061\u306f-9-4] PASSED [ 18%] tests/input/test_input_mouse.py::test_mouse_clicks_within[\u3053\u3093\u306b\u3061\u306f-10-5] PASSED [ 18%] tests/input/test_input_mouse.py::test_mouse_clicks_within[\u3053\u3093\u306b\u3061\u306f-50-5] PASSED [ 18%] tests/input/test_input_mouse.py::test_mouse_clicks_within[a\u3053\u3093bc\u306bd\u3061e\u306f-0-0] PASSED [ 18%] tests/input/test_input_mouse.py::test_mouse_clicks_within[a\u3053\u3093bc\u306bd\u3061e\u306f-1-1] PASSED [ 18%] tests/input/test_input_mouse.py::test_mouse_clicks_within[a\u3053\u3093bc\u306bd\u3061e\u306f-2-1] PASSED [ 18%] tests/input/test_input_mouse.py::test_mouse_clicks_within[a\u3053\u3093bc\u306bd\u3061e\u306f-3-2] PASSED [ 18%] tests/input/test_input_mouse.py::test_mouse_clicks_within[a\u3053\u3093bc\u306bd\u3061e\u306f-4-2] PASSED [ 18%] tests/input/test_input_mouse.py::test_mouse_clicks_within[a\u3053\u3093bc\u306bd\u3061e\u306f-5-3] PASSED [ 18%] tests/input/test_input_mouse.py::test_mouse_clicks_within[a\u3053\u3093bc\u306bd\u3061e\u306f-13-9] PASSED [ 18%] tests/input/test_input_mouse.py::test_mouse_clicks_within[a\u3053\u3093bc\u306bd\u3061e\u306f-14-9] PASSED [ 18%] tests/input/test_input_mouse.py::test_mouse_clicks_within[a\u3053\u3093bc\u306bd\u3061e\u306f-15-10] PASSED [ 18%] tests/input/test_input_mouse.py::test_mouse_clicks_within[a\u3053\u3093bc\u306bd\u3061e\u306f-60-10] PASSED [ 18%] tests/input/test_input_mouse.py::test_mouse_click_outwith PASSED [ 18%] tests/input/test_input_properties.py::test_internal_value_no_password PASSED [ 18%] tests/input/test_input_properties.py::test_internal_value_password PASSED [ 18%] tests/input/test_input_properties.py::test_internal_value_highlighted PASSED [ 18%] tests/input/test_input_properties.py::test_cursor_toggle PASSED [ 18%] tests/input/test_input_properties.py::test_input_height PASSED [ 19%] tests/input/test_input_restrict.py::test_input_number_type PASSED [ 19%] tests/input/test_input_restrict.py::test_input_integer_type PASSED [ 19%] tests/input/test_input_restrict.py::test_bad_type PASSED [ 19%] tests/input/test_input_restrict.py::test_max_length PASSED [ 19%] tests/input/test_input_restrict.py::test_restrict PASSED [ 19%] tests/input/test_input_restrict.py::test_restrict_type PASSED [ 19%] tests/input/test_input_terminal_cursor.py::test_initial_terminal_cursor_position PASSED [ 19%] tests/input/test_input_terminal_cursor.py::test_terminal_cursor_position_update_on_cursor_move PASSED [ 19%] tests/input/test_input_validation.py::test_input_changed_message_validation_failure PASSED [ 19%] tests/input/test_input_validation.py::test_input_changed_message_validation_success PASSED [ 19%] tests/input/test_input_validation.py::test_input_submitted_message_validation_failure PASSED [ 19%] tests/input/test_input_validation.py::test_input_submitted_message_validation_success PASSED [ 19%] tests/input/test_input_validation.py::test_on_blur_triggers_validation PASSED [ 19%] tests/input/test_input_validation.py::test_validation_on_changed_should_not_happen[validate_on0] PASSED [ 19%] tests/input/test_input_validation.py::test_validation_on_changed_should_not_happen[validate_on1] PASSED [ 19%] tests/input/test_input_validation.py::test_validation_on_changed_should_not_happen[validate_on2] PASSED [ 19%] tests/input/test_input_validation.py::test_validation_on_changed_should_not_happen[validate_on3] PASSED [ 19%] tests/input/test_input_validation.py::test_validation_on_changed_should_not_happen[validate_on4] PASSED [ 19%] tests/input/test_input_validation.py::test_validation_on_changed_should_not_happen[validate_on5] PASSED [ 19%] tests/input/test_input_validation.py::test_validation_on_submitted_should_not_happen[validate_on0] PASSED [ 19%] tests/input/test_input_validation.py::test_validation_on_submitted_should_not_happen[validate_on1] PASSED [ 19%] tests/input/test_input_validation.py::test_validation_on_submitted_should_not_happen[validate_on2] PASSED [ 19%] tests/input/test_input_validation.py::test_validation_on_submitted_should_not_happen[validate_on3] PASSED [ 19%] tests/input/test_input_validation.py::test_validation_on_submitted_should_not_happen[validate_on4] PASSED [ 19%] tests/input/test_input_validation.py::test_validation_on_blur_should_not_happen_unless_specified[validate_on0] PASSED [ 19%] tests/input/test_input_validation.py::test_validation_on_blur_should_not_happen_unless_specified[validate_on1] PASSED [ 20%] tests/input/test_input_validation.py::test_validation_on_blur_should_not_happen_unless_specified[validate_on2] PASSED [ 20%] tests/input/test_input_validation.py::test_validation_on_blur_should_not_happen_unless_specified[validate_on3] PASSED [ 20%] tests/input/test_input_validation.py::test_validation_on_blur_should_not_happen_unless_specified[validate_on4] PASSED [ 20%] tests/input/test_input_validation.py::test_none_validate_on_means_all_validations_happen PASSED [ 20%] tests/input/test_input_validation.py::test_valid_empty PASSED [ 20%] tests/input/test_input_value_visibility.py::test_input_value_visible_on_instantiation PASSED [ 20%] tests/input/test_input_value_visibility.py::test_input_value_visible_after_value_assignment PASSED [ 20%] tests/input/test_input_value_visibility.py::test_input_value_visible_if_mounted_later PASSED [ 20%] tests/input/test_input_value_visibility.py::test_input_value_visible_if_mounted_later_and_focused PASSED [ 20%] tests/input/test_input_value_visibility.py::test_input_value_visible_if_mounted_later_and_assigned_after PASSED [ 20%] tests/layouts/test_common_layout_features.py::test_nodes_take_display_property_into_account_when_they_display_their_children[horizontal-block-True] PASSED [ 20%] tests/layouts/test_common_layout_features.py::test_nodes_take_display_property_into_account_when_they_display_their_children[vertical-block-True] PASSED [ 20%] tests/layouts/test_common_layout_features.py::test_nodes_take_display_property_into_account_when_they_display_their_children[horizontal-none-False] PASSED [ 20%] tests/layouts/test_common_layout_features.py::test_nodes_take_display_property_into_account_when_they_display_their_children[vertical-none-False] PASSED [ 20%] tests/layouts/test_content_dimensions.py::test_empty_widget_height[GridLayout] PASSED [ 20%] tests/layouts/test_content_dimensions.py::test_empty_widget_height[HorizontalLayout] PASSED [ 20%] tests/layouts/test_content_dimensions.py::test_empty_widget_height[VerticalLayout] PASSED [ 20%] tests/layouts/test_content_dimensions.py::test_empty_widget_width[GridLayout] PASSED [ 20%] tests/layouts/test_content_dimensions.py::test_empty_widget_width[HorizontalLayout] PASSED [ 20%] tests/layouts/test_content_dimensions.py::test_empty_widget_width[VerticalLayout] PASSED [ 20%] tests/layouts/test_factory.py::test_get_layout_valid_layout PASSED [ 20%] tests/layouts/test_factory.py::test_get_layout_invalid_layout PASSED [ 20%] tests/layouts/test_horizontal.py::test_horizontal_get_content_width PASSED [ 20%] tests/listview/test_inherit_listview.py::test_empty_inherited_list_view PASSED [ 20%] tests/listview/test_inherit_listview.py::test_populated_inherited_list_view PASSED [ 20%] tests/listview/test_inherit_listview.py::test_actions_work_when_list_view_empty PASSED [ 20%] tests/listview/test_listview_initial_index.py::test_listview_initial_index[0-1] PASSED [ 21%] tests/listview/test_listview_initial_index.py::test_listview_initial_index[1-1] PASSED [ 21%] tests/listview/test_listview_initial_index.py::test_listview_initial_index[2-4] PASSED [ 21%] tests/listview/test_listview_initial_index.py::test_listview_initial_index[3-4] PASSED [ 21%] tests/listview/test_listview_initial_index.py::test_listview_initial_index[4-4] PASSED [ 21%] tests/listview/test_listview_initial_index.py::test_listview_initial_index[5-5] PASSED [ 21%] tests/listview/test_listview_initial_index.py::test_listview_initial_index[6-7] PASSED [ 21%] tests/listview/test_listview_initial_index.py::test_listview_initial_index[7-7] PASSED [ 21%] tests/listview/test_listview_initial_index.py::test_listview_initial_index[8-1] PASSED [ 21%] tests/listview/test_listview_navigation.py::test_keyboard_navigation_with_disabled_items PASSED [ 21%] tests/listview/test_listview_remove_items.py::test_listview_remove_items PASSED [ 21%] tests/notifications/test_all_levels_notifications.py::test_all_levels_of_notification PASSED [ 21%] tests/notifications/test_app_notifications.py::test_app_no_notifications PASSED [ 21%] tests/notifications/test_app_notifications.py::test_app_with_notifications PASSED [ 21%] tests/notifications/test_app_notifications.py::test_app_with_removing_notifications PASSED [ 21%] tests/notifications/test_app_notifications.py::test_app_with_notifications_that_expire PASSED [ 21%] tests/notifications/test_app_notifications.py::test_app_clearing_notifications PASSED [ 21%] tests/notifications/test_notification.py::test_message PASSED [ 21%] tests/notifications/test_notification.py::test_default_title PASSED [ 21%] tests/notifications/test_notification.py::test_default_severity_level PASSED [ 21%] tests/notifications/test_notification.py::test_default_timeout PASSED [ 21%] tests/notifications/test_notification.py::test_identity_is_unique PASSED [ 21%] tests/notifications/test_notification.py::test_time_out PASSED [ 21%] tests/notifications/test_notifications.py::test_empty_to_start_with PASSED [ 21%] tests/notifications/test_notifications.py::test_many_notifications PASSED [ 21%] tests/notifications/test_notifications.py::test_timeout PASSED [ 21%] tests/notifications/test_notifications.py::test_in PASSED [ 21%] tests/notifications/test_notifications.py::test_remove_notification PASSED [ 22%] tests/notifications/test_notifications.py::test_remove_notification_multiple_times PASSED [ 22%] tests/notifications/test_notifications.py::test_clear PASSED [ 22%] tests/option_list/test_option_list_create.py::test_all_parameters_become_options PASSED [ 22%] tests/option_list/test_option_list_create.py::test_id_capture PASSED [ 22%] tests/option_list/test_option_list_create.py::test_get_option_by_id PASSED [ 22%] tests/option_list/test_option_list_create.py::test_get_option_with_bad_id PASSED [ 22%] tests/option_list/test_option_list_create.py::test_get_option_by_index PASSED [ 22%] tests/option_list/test_option_list_create.py::test_get_option_at_bad_index PASSED [ 22%] tests/option_list/test_option_list_create.py::test_clear_option_list PASSED [ 22%] tests/option_list/test_option_list_create.py::test_add_later PASSED [ 22%] tests/option_list/test_option_list_create.py::test_create_with_duplicate_id PASSED [ 22%] tests/option_list/test_option_list_create.py::test_create_with_duplicate_id_and_subsequent_non_dupes PASSED [ 22%] tests/option_list/test_option_list_create.py::test_adding_multiple_duplicates_at_once PASSED [ 22%] tests/option_list/test_option_list_create.py::test_options_are_available_soon PASSED [ 22%] tests/option_list/test_option_list_disabled.py::test_default_enabled PASSED [ 22%] tests/option_list/test_option_list_disabled.py::test_default_disabled PASSED [ 22%] tests/option_list/test_option_list_disabled.py::test_enabled_to_disabled_via_index PASSED [ 22%] tests/option_list/test_option_list_disabled.py::test_disabled_to_enabled_via_index PASSED [ 22%] tests/option_list/test_option_list_disabled.py::test_enabled_to_disabled_via_id PASSED [ 22%] tests/option_list/test_option_list_disabled.py::test_disabled_to_enabled_via_id PASSED [ 22%] tests/option_list/test_option_list_disabled.py::test_disable_invalid_id PASSED [ 22%] tests/option_list/test_option_list_disabled.py::test_disable_invalid_index PASSED [ 22%] tests/option_list/test_option_list_disabled.py::test_enable_invalid_id PASSED [ 22%] tests/option_list/test_option_list_disabled.py::test_enable_invalid_index PASSED [ 22%] tests/option_list/test_option_list_id_stability.py::test_get_after_add PASSED [ 22%] tests/option_list/test_option_list_mouse_click.py::test_option_list_clicking_separator PASSED [ 22%] tests/option_list/test_option_list_mouse_hover.py::test_no_hover PASSED [ 23%] tests/option_list/test_option_list_mouse_hover.py::test_hover_highlight PASSED [ 23%] tests/option_list/test_option_list_mouse_hover.py::test_hover_no_highlight PASSED [ 23%] tests/option_list/test_option_list_mouse_hover.py::test_hover_disabled PASSED [ 23%] tests/option_list/test_option_list_mouse_hover.py::test_hover_then_leave PASSED [ 23%] tests/option_list/test_option_list_movement.py::test_initial_highlight PASSED [ 23%] tests/option_list/test_option_list_movement.py::test_cleared_highlight_is_none PASSED [ 23%] tests/option_list/test_option_list_movement.py::test_cleared_movement_does_nothing PASSED [ 23%] tests/option_list/test_option_list_movement.py::test_move_down PASSED [ 23%] tests/option_list/test_option_list_movement.py::test_move_down_from_end PASSED [ 23%] tests/option_list/test_option_list_movement.py::test_move_up PASSED [ 23%] tests/option_list/test_option_list_movement.py::test_move_up_from_nowhere PASSED [ 23%] tests/option_list/test_option_list_movement.py::test_move_end PASSED [ 23%] tests/option_list/test_option_list_movement.py::test_move_home PASSED [ 23%] tests/option_list/test_option_list_movement.py::test_page_down_from_start_short_list PASSED [ 23%] tests/option_list/test_option_list_movement.py::test_page_up_from_end_short_list PASSED [ 23%] tests/option_list/test_option_list_movement.py::test_page_down_from_end_short_list PASSED [ 23%] tests/option_list/test_option_list_movement.py::test_page_up_from_start_short_list PASSED [ 23%] tests/option_list/test_option_list_movement.py::test_empty_list_movement PASSED [ 23%] tests/option_list/test_option_list_movement.py::test_no_highlight_movement[up-99] PASSED [ 23%] tests/option_list/test_option_list_movement.py::test_no_highlight_movement[down-0] PASSED [ 23%] tests/option_list/test_option_list_movement.py::test_no_highlight_movement[home-0] PASSED [ 23%] tests/option_list/test_option_list_movement.py::test_no_highlight_movement[end-99] PASSED [ 23%] tests/option_list/test_option_list_movement.py::test_no_highlight_movement[pageup-0] PASSED [ 23%] tests/option_list/test_option_list_movement.py::test_no_highlight_movement[pagedown-99] PASSED [ 23%] tests/option_list/test_option_list_movement.py::test_keyboard_navigation_with_disabled_options PASSED [ 23%] tests/option_list/test_option_list_option_subclass.py::test_option_list_with_subclassed_options PASSED [ 24%] tests/option_list/test_option_messages.py::test_messages_on_startup PASSED [ 24%] tests/option_list/test_option_messages.py::test_same_highlight_message PASSED [ 24%] tests/option_list/test_option_messages.py::test_highlight_disabled_option_no_message PASSED [ 24%] tests/option_list/test_option_messages.py::test_new_highlight PASSED [ 24%] tests/option_list/test_option_messages.py::test_move_highlight_with_keyboard PASSED [ 24%] tests/option_list/test_option_messages.py::test_select_message_with_keyboard PASSED [ 24%] tests/option_list/test_option_messages.py::test_click_option_with_mouse PASSED [ 24%] tests/option_list/test_option_messages.py::test_click_disabled_option_with_mouse PASSED [ 24%] tests/option_list/test_option_prompt_replacement.py::test_replace_option_prompt_with_invalid_id PASSED [ 24%] tests/option_list/test_option_prompt_replacement.py::test_replace_option_prompt_with_invalid_index PASSED [ 24%] tests/option_list/test_option_prompt_replacement.py::test_replace_option_prompt_with_valid_id PASSED [ 24%] tests/option_list/test_option_prompt_replacement.py::test_replace_option_prompt_with_valid_index PASSED [ 24%] tests/option_list/test_option_prompt_replacement.py::test_replace_single_line_option_prompt_with_multiple PASSED [ 24%] tests/option_list/test_option_prompt_replacement.py::test_replace_multiple_line_option_prompt_with_single PASSED [ 24%] tests/option_list/test_option_prompt_replacement.py::test_replace_multiple_line_option_prompt_with_multiple PASSED [ 24%] tests/option_list/test_option_removal.py::test_remove_first_option_via_index PASSED [ 24%] tests/option_list/test_option_removal.py::test_remove_first_option_via_id PASSED [ 24%] tests/option_list/test_option_removal.py::test_remove_last_option_via_index PASSED [ 24%] tests/option_list/test_option_removal.py::test_remove_last_option_via_id PASSED [ 24%] tests/option_list/test_option_removal.py::test_remove_all_options_via_index PASSED [ 24%] tests/option_list/test_option_removal.py::test_remove_all_options_via_id PASSED [ 24%] tests/option_list/test_option_removal.py::test_remove_invalid_id PASSED [ 24%] tests/option_list/test_option_removal.py::test_remove_invalid_index PASSED [ 24%] tests/option_list/test_option_removal.py::test_remove_with_hover_on_last_option PASSED [ 24%] tests/renderables/test_sparkline.py::test_sparkline_no_data PASSED [ 24%] tests/renderables/test_sparkline.py::test_sparkline_single_datapoint PASSED [ 24%] tests/renderables/test_sparkline.py::test_sparkline_two_values_min_max PASSED [ 25%] tests/renderables/test_sparkline.py::test_sparkline_expand_data_to_width PASSED [ 25%] tests/renderables/test_sparkline.py::test_sparkline_expand_data_to_width_non_divisible PASSED [ 25%] tests/renderables/test_sparkline.py::test_sparkline_shrink_data_to_width PASSED [ 25%] tests/renderables/test_sparkline.py::test_sparkline_color_blend PASSED [ 25%] tests/renderables/test_sparkline.py::test_sparkline_sequence_types[data0] PASSED [ 25%] tests/renderables/test_sparkline.py::test_sparkline_sequence_types[data1] PASSED [ 25%] tests/renderables/test_sparkline.py::test_sparkline_sequence_types[data2] PASSED [ 25%] tests/renderables/test_sparkline.py::test_sparkline_sequence_types[\x01\x02\x03] PASSED [ 25%] tests/renderables/test_sparkline.py::test_sparkline_sequence_types[data4] PASSED [ 25%] tests/renderables/test_sparkline.py::test_sparkline_sequence_types[data5] PASSED [ 25%] tests/renderables/test_sparkline.py::test_sparkline_sequence_types[data6] PASSED [ 25%] tests/renderables/test_text_opacity.py::test_simple_text_opacity PASSED [ 25%] tests/renderables/test_text_opacity.py::test_value_zero_doesnt_render_the_text PASSED [ 25%] tests/renderables/test_text_opacity.py::test_text_opacity_value_of_one_noop PASSED [ 25%] tests/renderables/test_text_opacity.py::test_ansi_colors_noop PASSED [ 25%] tests/renderables/test_text_opacity.py::test_text_opacity_no_style_noop PASSED [ 25%] tests/renderables/test_text_opacity.py::test_text_opacity_only_fg_noop PASSED [ 25%] tests/renderables/test_text_opacity.py::test_text_opacity_only_bg_noop PASSED [ 25%] tests/renderables/test_tint.py::test_tint PASSED [ 25%] tests/renderables/test_tint.py::test_tint_ansi_mapping PASSED [ 25%] tests/renderables/test_underline_bar.py::test_no_highlight PASSED [ 25%] tests/renderables/test_underline_bar.py::test_highlight_from_zero PASSED [ 25%] tests/renderables/test_underline_bar.py::test_highlight_from_zero_point_five PASSED [ 25%] tests/renderables/test_underline_bar.py::test_highlight_middle PASSED [ 25%] tests/renderables/test_underline_bar.py::test_highlight_half_start PASSED [ 25%] tests/renderables/test_underline_bar.py::test_highlight_half_end PASSED [ 25%] tests/renderables/test_underline_bar.py::test_highlight_half_start_and_half_end PASSED [ 26%] tests/renderables/test_underline_bar.py::test_highlight_to_near_end PASSED [ 26%] tests/renderables/test_underline_bar.py::test_highlight_to_end PASSED [ 26%] tests/renderables/test_underline_bar.py::test_highlight_out_of_bounds_start PASSED [ 26%] tests/renderables/test_underline_bar.py::test_highlight_out_of_bounds_end PASSED [ 26%] tests/renderables/test_underline_bar.py::test_highlight_full_range_out_of_bounds_end PASSED [ 26%] tests/renderables/test_underline_bar.py::test_highlight_full_range_out_of_bounds_start PASSED [ 26%] tests/renderables/test_underline_bar.py::test_custom_styles PASSED [ 26%] tests/renderables/test_underline_bar.py::test_clickable_ranges PASSED [ 26%] tests/select/test_blank_and_clear.py::test_value_is_blank_by_default PASSED [ 26%] tests/select/test_blank_and_clear.py::test_setting_and_checking_blank PASSED [ 26%] tests/select/test_blank_and_clear.py::test_clear_with_allow_blanks PASSED [ 26%] tests/select/test_blank_and_clear.py::test_clear_fails_if_allow_blank_is_false PASSED [ 26%] tests/select/test_changed_message.py::test_message_control PASSED [ 26%] tests/select/test_changed_message.py::test_selecting_posts_message PASSED [ 26%] tests/select/test_changed_message.py::test_same_selection_does_not_post_message PASSED [ 26%] tests/select/test_changed_message.py::test_setting_value_posts_message PASSED [ 26%] tests/select/test_empty_select.py::test_empty_select_is_ok_with_blanks PASSED [ 26%] tests/select/test_empty_select.py::test_empty_set_options_is_ok_with_blanks PASSED [ 26%] tests/select/test_empty_select.py::test_empty_select_raises_exception_if_allow_blank_is_false PASSED [ 26%] tests/select/test_empty_select.py::test_empty_set_options_raises_exception_if_allow_blank_is_false PASSED [ 26%] tests/select/test_prompt.py::test_reactive_prompt_change PASSED [ 26%] tests/select/test_prompt.py::test_reactive_prompt_change_when_allow_blank_is_false PASSED [ 26%] tests/select/test_remove.py::test_select_remove PASSED [ 26%] tests/select/test_value.py::test_initial_value_is_validated PASSED [ 26%] tests/select/test_value.py::test_value_unknown_option_raises_error PASSED [ 26%] tests/select/test_value.py::test_initial_value_inside_compose_is_validated PASSED [ 27%] tests/select/test_value.py::test_value_assign_to_blank PASSED [ 27%] tests/select/test_value.py::test_initial_value_is_picked_if_allow_blank_is_false PASSED [ 27%] tests/select/test_value.py::test_set_value_to_blank_with_allow_blank_false PASSED [ 27%] tests/select/test_value.py::test_set_options_resets_value_to_blank PASSED [ 27%] tests/select/test_value.py::test_set_options_resets_value_if_allow_blank_is_false PASSED [ 27%] tests/selection_list/test_over_wide_selections.py::test_over_wide_options PASSED [ 27%] tests/selection_list/test_selection_click_checkbox.py::test_click_on_prompt PASSED [ 27%] tests/selection_list/test_selection_click_checkbox.py::test_click_on_checkbox PASSED [ 27%] tests/selection_list/test_selection_list_create.py::test_all_parameters_become_selctions PASSED [ 27%] tests/selection_list/test_selection_list_create.py::test_get_selection_by_index PASSED [ 27%] tests/selection_list/test_selection_list_create.py::test_get_selection_by_id PASSED [ 27%] tests/selection_list/test_selection_list_create.py::test_add_later PASSED [ 27%] tests/selection_list/test_selection_list_create.py::test_add_later_selcted_state PASSED [ 27%] tests/selection_list/test_selection_list_create.py::test_add_non_selections PASSED [ 27%] tests/selection_list/test_selection_list_create.py::test_clear_options PASSED [ 27%] tests/selection_list/test_selection_list_create.py::test_options_are_available_soon PASSED [ 27%] tests/selection_list/test_selection_list_create.py::test_removing_option_updates_indexes PASSED [ 27%] tests/selection_list/test_selection_messages.py::test_messages_on_startup PASSED [ 27%] tests/selection_list/test_selection_messages.py::test_new_highlight PASSED [ 27%] tests/selection_list/test_selection_messages.py::test_toggle PASSED [ 27%] tests/selection_list/test_selection_messages.py::test_toggle_via_user PASSED [ 27%] tests/selection_list/test_selection_messages.py::test_toggle_all PASSED [ 27%] tests/selection_list/test_selection_messages.py::test_select PASSED [ 27%] tests/selection_list/test_selection_messages.py::test_select_selected PASSED [ 27%] tests/selection_list/test_selection_messages.py::test_select_all PASSED [ 27%] tests/selection_list/test_selection_messages.py::test_select_all_selected PASSED [ 27%] tests/selection_list/test_selection_messages.py::test_deselect PASSED [ 28%] tests/selection_list/test_selection_messages.py::test_deselect_deselected PASSED [ 28%] tests/selection_list/test_selection_messages.py::test_deselect_all PASSED [ 28%] tests/selection_list/test_selection_messages.py::test_select_then_deselect_all PASSED [ 28%] tests/selection_list/test_selection_values.py::test_empty_selected PASSED [ 28%] tests/selection_list/test_selection_values.py::test_programatic_select PASSED [ 28%] tests/selection_list/test_selection_values.py::test_programatic_select_all PASSED [ 28%] tests/selection_list/test_selection_values.py::test_programatic_deselect PASSED [ 28%] tests/selection_list/test_selection_values.py::test_programatic_deselect_all PASSED [ 28%] tests/selection_list/test_selection_values.py::test_programatic_toggle PASSED [ 28%] tests/selection_list/test_selection_values.py::test_programatic_toggle_all PASSED [ 28%] tests/selection_list/test_selection_values.py::test_removal_of_selected_item PASSED [ 28%] tests/suggester/test_input_suggestions.py::test_no_suggestions PASSED [ 28%] tests/suggester/test_input_suggestions.py::test_suggestion PASSED [ 28%] tests/suggester/test_input_suggestions.py::test_accept_suggestion PASSED [ 28%] tests/suggester/test_input_suggestions.py::test_no_suggestion_on_empty_value PASSED [ 28%] tests/suggester/test_input_suggestions.py::test_no_suggestion_on_empty_value_after_deleting PASSED [ 28%] tests/suggester/test_input_suggestions.py::test_suggestion_shows_up_after_deleting_extra_chars PASSED [ 28%] tests/suggester/test_input_suggestions.py::test_suggestion_shows_up_after_deleting_extra_chars_in_middle_of_word PASSED [ 28%] tests/suggester/test_input_suggestions.py::test_suggestion_with_special_characters[.......-3] PASSED [ 28%] tests/suggester/test_input_suggestions.py::test_suggestion_with_special_characters[hey there-3] PASSED [ 28%] tests/suggester/test_input_suggestions.py::test_suggestion_with_special_characters[Ol\xe1, tudo bem?-3] PASSED [ 28%] tests/suggester/test_input_suggestions.py::test_suggestion_with_special_characters[\xe1\xe0\xf3\xe3\xf5\xf1\xe7-2] PASSED [ 28%] tests/suggester/test_input_suggestions.py::test_suggestion_with_special_characters[!"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~-3] PASSED [ 28%] tests/suggester/test_input_suggestions.py::test_suggestion_with_special_characters[~}|{`_^]\\[@?>=<;:/.-,+*)('&%$#"!-5] PASSED [ 28%] tests/suggester/test_input_suggestions.py::test_suggestion_with_special_characters[!$'*-:=@]`}-5] PASSED [ 28%] tests/suggester/test_input_suggestions.py::test_suggestion_priority PASSED [ 28%] tests/suggester/test_suggest_from_list.py::test_first_suggestion_has_priority PASSED [ 29%] tests/suggester/test_suggest_from_list.py::test_case_insensitive_suggestions[s] PASSED [ 29%] tests/suggester/test_suggest_from_list.py::test_case_insensitive_suggestions[S] PASSED [ 29%] tests/suggester/test_suggest_from_list.py::test_case_insensitive_suggestions[sc] PASSED [ 29%] tests/suggester/test_suggest_from_list.py::test_case_insensitive_suggestions[sC] PASSED [ 29%] tests/suggester/test_suggest_from_list.py::test_case_insensitive_suggestions[Sc] PASSED [ 29%] tests/suggester/test_suggest_from_list.py::test_case_insensitive_suggestions[SC] PASSED [ 29%] tests/suggester/test_suggest_from_list.py::test_first_suggestion_has_priority_case_insensitive[p] PASSED [ 29%] tests/suggester/test_suggest_from_list.py::test_first_suggestion_has_priority_case_insensitive[P] PASSED [ 29%] tests/suggester/test_suggest_from_list.py::test_first_suggestion_has_priority_case_insensitive[po] PASSED [ 29%] tests/suggester/test_suggest_from_list.py::test_first_suggestion_has_priority_case_insensitive[Po] PASSED [ 29%] tests/suggester/test_suggest_from_list.py::test_first_suggestion_has_priority_case_insensitive[pO] PASSED [ 29%] tests/suggester/test_suggest_from_list.py::test_first_suggestion_has_priority_case_insensitive[PO] PASSED [ 29%] tests/suggester/test_suggest_from_list.py::test_first_suggestion_has_priority_case_insensitive[port] PASSED [ 29%] tests/suggester/test_suggest_from_list.py::test_first_suggestion_has_priority_case_insensitive[Port] PASSED [ 29%] tests/suggester/test_suggest_from_list.py::test_first_suggestion_has_priority_case_insensitive[pORT] PASSED [ 29%] tests/suggester/test_suggest_from_list.py::test_first_suggestion_has_priority_case_insensitive[PORT] PASSED [ 29%] tests/suggester/test_suggester.py::test_cache_on PASSED [ 29%] tests/suggester/test_suggester.py::test_cache_off PASSED [ 29%] tests/suggester/test_suggester.py::test_suggestion_ready_message PASSED [ 29%] tests/suggester/test_suggester.py::test_no_message_if_no_suggestion PASSED [ 29%] tests/suggester/test_suggester.py::test_suggestion_ready_message_on_cache_hit PASSED [ 29%] tests/suggester/test_suggester.py::test_case_insensitive_suggestions[hello] PASSED [ 29%] tests/suggester/test_suggester.py::test_case_insensitive_suggestions[HELLO] PASSED [ 29%] tests/suggester/test_suggester.py::test_case_insensitive_suggestions[HeLlO] PASSED [ 29%] tests/suggester/test_suggester.py::test_case_insensitive_suggestions[Hello] PASSED [ 29%] tests/suggester/test_suggester.py::test_case_insensitive_suggestions[hELLO] PASSED [ 29%] tests/suggester/test_suggester.py::test_case_insensitive_cache_hits PASSED [ 30%] tests/test_actions.py::test_parse_action[spam--spam-expected_arguments0] PASSED [ 30%] tests/test_actions.py::test_parse_action[hypothetical_action()--hypothetical_action-expected_arguments1] PASSED [ 30%] tests/test_actions.py::test_parse_action[another_action(1)--another_action-expected_arguments2] PASSED [ 30%] tests/test_actions.py::test_parse_action[foo(True, False)--foo-expected_arguments3] PASSED [ 30%] tests/test_actions.py::test_parse_action[foo.bar.baz(3, 3.15, 'Python')-foo.bar-baz-expected_arguments4] PASSED [ 30%] tests/test_actions.py::test_parse_action[m1234.n5678(None, [1, 2])-m1234-n5678-expected_arguments5] PASSED [ 30%] tests/test_actions.py::test_nested_and_convoluted_tuple_arguments[f()-expected_arguments0] PASSED [ 30%] tests/test_actions.py::test_nested_and_convoluted_tuple_arguments[f(())-expected_arguments1] PASSED [ 30%] tests/test_actions.py::test_nested_and_convoluted_tuple_arguments[f((1, 2, 3))-expected_arguments2] PASSED [ 30%] tests/test_actions.py::test_nested_and_convoluted_tuple_arguments[f((1, 2, 3), (1, 2, 3))-expected_arguments3] PASSED [ 30%] tests/test_actions.py::test_nested_and_convoluted_tuple_arguments[f(((1, 2), (), None), 0)-expected_arguments4] PASSED [ 30%] tests/test_actions.py::test_nested_and_convoluted_tuple_arguments[f((((((1))))))-expected_arguments5] PASSED [ 30%] tests/test_actions.py::test_nested_and_convoluted_tuple_arguments[f(((((((((1, 2)))))))))-expected_arguments6] PASSED [ 30%] tests/test_actions.py::test_nested_and_convoluted_tuple_arguments[f((1, 2), (3, 4))-expected_arguments7] PASSED [ 30%] tests/test_actions.py::test_nested_and_convoluted_tuple_arguments[f((((((1, 2), (3, 4))))))-expected_arguments8] PASSED [ 30%] tests/test_actions.py::test_parse_action_nested_special_character_arguments[f('')-expected_arguments0] PASSED [ 30%] tests/test_actions.py::test_parse_action_nested_special_character_arguments[f("")-expected_arguments1] PASSED [ 30%] tests/test_actions.py::test_parse_action_nested_special_character_arguments[f('''''')-expected_arguments2] PASSED [ 30%] tests/test_actions.py::test_parse_action_nested_special_character_arguments[f("""""")-expected_arguments3] PASSED [ 30%] tests/test_actions.py::test_parse_action_nested_special_character_arguments[f('(')-expected_arguments4] PASSED [ 30%] tests/test_actions.py::test_parse_action_nested_special_character_arguments[f(')')-expected_arguments5] PASSED [ 30%] tests/test_actions.py::test_parse_action_nested_special_character_arguments[f('f()')-expected_arguments6] PASSED [ 30%] tests/test_actions.py::test_parse_action_raises_error[foo(,,,,,)] PASSED [ 30%] tests/test_actions.py::test_parse_action_raises_error[bar(1 2 3 4 5)] PASSED [ 30%] tests/test_actions.py::test_parse_action_raises_error[baz.spam(Tru, Fals, in)] PASSED [ 30%] tests/test_actions.py::test_parse_action_raises_error[ham(not)] PASSED [ 31%] tests/test_actions.py::test_parse_action_raises_error[cheese((((()] PASSED [ 31%] tests/test_animation.py::test_animate_height PASSED [ 31%] tests/test_animation.py::test_scheduling_animation PASSED [ 31%] tests/test_animation.py::test_wait_for_current_animations PASSED [ 31%] tests/test_animation.py::test_wait_for_current_and_scheduled_animations PASSED [ 31%] tests/test_animation.py::test_reverse_animations PASSED [ 31%] tests/test_animation.py::test_schedule_reverse_animations PASSED [ 31%] tests/test_animation.py::test_cancel_app_animation PASSED [ 31%] tests/test_animation.py::test_cancel_app_non_animation PASSED [ 31%] tests/test_animation.py::test_cancel_widget_animation PASSED [ 31%] tests/test_animation.py::test_cancel_widget_non_animation PASSED [ 31%] tests/test_animator.py::test_simple_animation PASSED [ 31%] tests/test_animator.py::test_simple_animation_duration_zero PASSED [ 31%] tests/test_animator.py::test_simple_animation_reverse PASSED [ 31%] tests/test_animator.py::test_animatable PASSED [ 31%] tests/test_animator.py::test_animator PASSED [ 31%] tests/test_animator.py::test_bound_animator PASSED [ 31%] tests/test_animator.py::test_animator_on_complete_callback_not_fired_before_duration_ends PASSED [ 31%] tests/test_animator.py::test_animator_on_complete_callback_fired_at_duration PASSED [ 31%] tests/test_animator.py::test_force_stop_animation PASSED [ 31%] tests/test_app.py::test_batch_update PASSED [ 31%] tests/test_app.py::test_hover_update_styles PASSED [ 31%] tests/test_app.py::test_setting_title PASSED [ 31%] tests/test_app.py::test_setting_sub_title PASSED [ 31%] tests/test_app.py::test_default_return_code_is_zero PASSED [ 31%] tests/test_app.py::test_return_code_is_one_after_crash PASSED [ 31%] tests/test_app.py::test_set_return_code PASSED [ 32%] tests/test_app.py::test_no_return_code_before_running PASSED [ 32%] tests/test_app.py::test_no_return_code_while_running PASSED [ 32%] tests/test_app.py::test_ansi_theme PASSED [ 32%] tests/test_app.py::test_early_exit PASSED [ 32%] tests/test_app.py::test_early_exit_inline PASSED [ 32%] tests/test_app_focus_blur.py::test_app_blur PASSED [ 32%] tests/test_app_focus_blur.py::test_app_focus_restores_focus PASSED [ 32%] tests/test_app_focus_blur.py::test_app_focus_restores_none_focus PASSED [ 32%] tests/test_app_focus_blur.py::test_app_focus_handles_missing_widget PASSED [ 32%] tests/test_app_focus_blur.py::test_app_focus_defers_to_new_focus PASSED [ 32%] tests/test_arrange.py::test_arrange_empty PASSED [ 32%] tests/test_arrange.py::test_arrange_dock_top PASSED [ 32%] tests/test_arrange.py::test_arrange_dock_left PASSED [ 32%] tests/test_arrange.py::test_arrange_dock_right PASSED [ 32%] tests/test_arrange.py::test_arrange_dock_bottom PASSED [ 32%] tests/test_arrange.py::test_arrange_dock_badly PASSED [ 32%] tests/test_auto_refresh.py::test_auto_refresh PASSED [ 32%] tests/test_await_remove.py::test_multiple_simultaneous_removals PASSED [ 32%] tests/test_binary_encode.py::test_round_trip[None] PASSED [ 32%] tests/test_binary_encode.py::test_round_trip[False] PASSED [ 32%] tests/test_binary_encode.py::test_round_trip[True] PASSED [ 32%] tests/test_binary_encode.py::test_round_trip[-10] PASSED [ 32%] tests/test_binary_encode.py::test_round_trip[-1] PASSED [ 32%] tests/test_binary_encode.py::test_round_trip[0] PASSED [ 32%] tests/test_binary_encode.py::test_round_trip[1] PASSED [ 32%] tests/test_binary_encode.py::test_round_trip[100] PASSED [ 32%] tests/test_binary_encode.py::test_round_trip[2] PASSED [ 33%] tests/test_binary_encode.py::test_round_trip[\U0001f4a9] PASSED [ 33%] tests/test_binary_encode.py::test_round_trip[Hello] PASSED [ 33%] tests/test_binary_encode.py::test_round_trip[World] PASSED [ 33%] tests/test_binary_encode.py::test_round_trip[3] PASSED [ 33%] tests/test_binary_encode.py::test_round_trip[data13] PASSED [ 33%] tests/test_binary_encode.py::test_round_trip[data14] PASSED [ 33%] tests/test_binary_encode.py::test_round_trip[data15] PASSED [ 33%] tests/test_binary_encode.py::test_round_trip[data16] PASSED [ 33%] tests/test_binary_encode.py::test_round_trip[data17] PASSED [ 33%] tests/test_binary_encode.py::test_round_trip[data18] PASSED [ 33%] tests/test_binary_encode.py::test_round_trip[data19] PASSED [ 33%] tests/test_binary_encode.py::test_round_trip[data20] PASSED [ 33%] tests/test_binary_encode.py::test_round_trip[4] PASSED [ 33%] tests/test_binary_encode.py::test_round_trip[data22] PASSED [ 33%] tests/test_binary_encode.py::test_round_trip[data23] PASSED [ 33%] tests/test_binary_encode.py::test_round_trip[data24] PASSED [ 33%] tests/test_binary_encode.py::test_round_trip[data25] PASSED [ 33%] tests/test_binary_encode.py::test_round_trip[data26] PASSED [ 33%] tests/test_binary_encode.py::test_round_trip[data27] PASSED [ 33%] tests/test_binary_encode.py::test_round_trip[data28] PASSED [ 33%] tests/test_binary_encode.py::test_round_trip[data29] PASSED [ 33%] tests/test_binary_encode.py::test_round_trip[data30] PASSED [ 33%] tests/test_binary_encode.py::test_round_trip[data31] PASSED [ 33%] tests/test_binary_encode.py::test_round_trip[data32] PASSED [ 33%] tests/test_binary_encode.py::test_round_trip[data33] PASSED [ 33%] tests/test_binary_encode.py::test_round_trip[data34] PASSED [ 33%] tests/test_binary_encode.py::test_round_trip[data35] PASSED [ 34%] tests/test_binary_encode.py::test_bad_encoding[] PASSED [ 34%] tests/test_binary_encode.py::test_bad_encoding[100:hello] PASSED [ 34%] tests/test_binary_encode.py::test_bad_encoding[i] PASSED [ 34%] tests/test_binary_encode.py::test_bad_encoding[i1] PASSED [ 34%] tests/test_binary_encode.py::test_bad_encoding[i10] PASSED [ 34%] tests/test_binary_encode.py::test_bad_encoding[li1e] PASSED [ 34%] tests/test_binary_encode.py::test_bad_encoding[x100] PASSED [ 34%] tests/test_binary_encode.py::test_dump_invalid_type[data0] PASSED [ 34%] tests/test_binary_encode.py::test_dump_invalid_type[float] PASSED [ 34%] tests/test_binary_encode.py::test_dump_invalid_type[data2] PASSED [ 34%] tests/test_binary_encode.py::test_dump_invalid_type[data3] PASSED [ 34%] tests/test_binary_encode.py::test_load_wrong_type PASSED [ 34%] tests/test_binding.py::test_bindings_get_key PASSED [ 34%] tests/test_binding.py::test_bindings_get_key_spaced_list PASSED [ 34%] tests/test_binding.py::test_bindings_merge_simple PASSED [ 34%] tests/test_binding.py::test_bindings_merge_overlap PASSED [ 34%] tests/test_binding.py::test_bad_binding_tuple PASSED [ 34%] tests/test_binding.py::test_binding_from_tuples PASSED [ 34%] tests/test_binding.py::test_shown PASSED [ 34%] tests/test_binding.py::test_invalid_binding PASSED [ 34%] tests/test_binding_inheritance.py::test_just_app_no_bindings PASSED [ 34%] tests/test_binding_inheritance.py::test_just_app_alpha_binding PASSED [ 34%] tests/test_binding_inheritance.py::test_just_app_low_priority_alpha_binding PASSED [ 34%] tests/test_binding_inheritance.py::test_app_screen_with_bindings PASSED [ 34%] tests/test_binding_inheritance.py::test_app_screen_with_low_bindings PASSED [ 34%] tests/test_binding_inheritance.py::test_pressing_alpha_on_app PASSED [ 35%] tests/test_binding_inheritance.py::test_pressing_movement_keys_app PASSED [ 35%] tests/test_binding_inheritance.py::test_focused_child_widget_with_movement_bindings PASSED [ 35%] tests/test_binding_inheritance.py::test_focused_child_widget_with_movement_bindings_on_screen PASSED [ 35%] tests/test_binding_inheritance.py::test_contained_focused_child_widget_with_movement_bindings_on_screen PASSED [ 35%] tests/test_binding_inheritance.py::test_focused_child_widget_with_movement_bindings_no_inherit PASSED [ 35%] tests/test_binding_inheritance.py::test_focused_child_widget_no_inherit_with_movement_bindings_on_screen PASSED [ 35%] tests/test_binding_inheritance.py::test_focused_child_widget_no_inherit_empty_bindings_with_movement_bindings_on_screen PASSED [ 35%] tests/test_binding_inheritance.py::test_overlapping_priority_bindings PASSED [ 35%] tests/test_binding_inheritance.py::test_skip_action PASSED [ 35%] tests/test_border.py::test_border_render_row PASSED [ 35%] tests/test_border.py::test_border_title_single_line PASSED [ 35%] tests/test_border.py::test_border_subtitle_single_line PASSED [ 35%] tests/test_border.py::test_render_border_label_empty_label_skipped[10-True-True] PASSED [ 35%] tests/test_border.py::test_render_border_label_empty_label_skipped[10-True-False] PASSED [ 35%] tests/test_border.py::test_render_border_label_empty_label_skipped[10-False-False] PASSED [ 35%] tests/test_border.py::test_render_border_label_empty_label_skipped[10-False-True] PASSED [ 35%] tests/test_border.py::test_render_border_label_empty_label_skipped[1-True-True] PASSED [ 35%] tests/test_border.py::test_render_border_label_empty_label_skipped[1-True-False] PASSED [ 35%] tests/test_border.py::test_render_border_label_empty_label_skipped[1-False-False] PASSED [ 35%] tests/test_border.py::test_render_border_label_empty_label_skipped[1-False-True] PASSED [ 35%] tests/test_border.py::test_render_border_label_skipped_if_narrow[hey-2-True-True] PASSED [ 35%] tests/test_border.py::test_render_border_label_skipped_if_narrow[hey-2-True-False] PASSED [ 35%] tests/test_border.py::test_render_border_label_skipped_if_narrow[hey-2-False-True] PASSED [ 35%] tests/test_border.py::test_render_border_label_skipped_if_narrow[hey-3-True-True] PASSED [ 35%] tests/test_border.py::test_render_border_label_skipped_if_narrow[hey-4-True-True] PASSED [ 35%] tests/test_border.py::test_render_border_label_wide_plain[Why did the scarecrow] PASSED [ 35%] tests/test_border.py::test_render_border_label_wide_plain[win a Nobel prize?] PASSED [ 36%] tests/test_border.py::test_render_border_label_wide_plain[because it was outstanding] PASSED [ 36%] tests/test_border.py::test_render_border_label_wide_plain[in its field.] PASSED [ 36%] tests/test_border.py::test_render_border_empty_text_with_markup[[b][/]] PASSED [ 36%] tests/test_border.py::test_render_border_empty_text_with_markup[[i b][/]] PASSED [ 36%] tests/test_border.py::test_render_border_empty_text_with_markup[[white on red][/]] PASSED [ 36%] tests/test_border.py::test_render_border_empty_text_with_markup[[blue]] PASSED [ 36%] tests/test_border.py::test_render_border_label PASSED [ 36%] tests/test_border_subtitle.py::test_border_subtitle PASSED [ 36%] tests/test_box_drawing.py::test_box_combine_quads[quad10-quad20-expected0] PASSED [ 36%] tests/test_box_drawing.py::test_box_combine_quads[quad11-quad21-expected1] PASSED [ 36%] tests/test_box_drawing.py::test_box_combine_quads[quad12-quad22-expected2] PASSED [ 36%] tests/test_box_drawing.py::test_box_combine_quads[quad13-quad23-expected3] PASSED [ 36%] tests/test_box_drawing.py::test_box_combine_quads[quad14-quad24-expected4] PASSED [ 36%] tests/test_box_drawing.py::test_box_combine_quads[quad15-quad25-expected5] PASSED [ 36%] tests/test_box_drawing.py::test_box_combine_quads[quad16-quad26-expected6] PASSED [ 36%] tests/test_box_drawing.py::test_box_combine_quads[quad17-quad27-expected7] PASSED [ 36%] tests/test_box_drawing.py::test_box_combine_quads[quad18-quad28-expected8] PASSED [ 36%] tests/test_box_drawing.py::test_box_combine_quads[quad19-quad29-expected9] PASSED [ 36%] tests/test_box_drawing.py::test_box_combine_quads[quad110-quad210-expected10] PASSED [ 36%] tests/test_box_drawing.py::test_box_combine_quads[quad111-quad211-expected11] PASSED [ 36%] tests/test_box_model.py::test_content_box PASSED [ 36%] tests/test_box_model.py::test_width PASSED [ 36%] tests/test_box_model.py::test_height PASSED [ 36%] tests/test_box_model.py::test_max PASSED [ 36%] tests/test_box_model.py::test_min PASSED [ 36%] tests/test_cache.py::test_lru_cache PASSED [ 36%] tests/test_cache.py::test_lru_cache_hits PASSED [ 37%] tests/test_cache.py::test_lru_cache_get PASSED [ 37%] tests/test_cache.py::test_lru_cache_maxsize PASSED [ 37%] tests/test_cache.py::test_lru_cache_mapping PASSED [ 37%] tests/test_cache.py::test_lru_cache_clear PASSED [ 37%] tests/test_cache.py::test_lru_cache_bool PASSED [ 37%] tests/test_cache.py::test_lru_cache_evicts[keys0-expected0] PASSED [ 37%] tests/test_cache.py::test_lru_cache_evicts[keys1-expected1] PASSED [ 37%] tests/test_cache.py::test_lru_cache_evicts[keys2-expected2] PASSED [ 37%] tests/test_cache.py::test_lru_cache_evicts[keys3-expected3] PASSED [ 37%] tests/test_cache.py::test_lru_cache_evicts[keys4-expected4] PASSED [ 37%] tests/test_cache.py::test_lru_cache_evicts[keys5-expected5] PASSED [ 37%] tests/test_cache.py::test_lru_cache_len[keys0-0] PASSED [ 37%] tests/test_cache.py::test_lru_cache_len[keys1-1] PASSED [ 37%] tests/test_cache.py::test_lru_cache_len[keys2-2] PASSED [ 37%] tests/test_cache.py::test_lru_cache_len[keys3-3] PASSED [ 37%] tests/test_cache.py::test_lru_cache_len[keys4-3] PASSED [ 37%] tests/test_cache.py::test_lru_cache_len[keys5-3] PASSED [ 37%] tests/test_cache.py::test_fifo_cache PASSED [ 37%] tests/test_cache.py::test_fifo_cache_hits PASSED [ 37%] tests/test_cache.py::test_discard PASSED [ 37%] tests/test_cache.py::test_discard_regression PASSED [ 37%] tests/test_call_x_schedulers.py::test_call_later PASSED [ 37%] tests/test_call_x_schedulers.py::test_call_after_refresh PASSED [ 37%] tests/test_case.py::test_camel_to_snake PASSED [ 37%] tests/test_collapsible.py::test_collapsible PASSED [ 37%] tests/test_collapsible.py::test_compose_default_collapsible PASSED [ 37%] tests/test_collapsible.py::test_compose_empty_collapsible PASSED [ 38%] tests/test_collapsible.py::test_compose_nested_collapsible PASSED [ 38%] tests/test_collapsible.py::test_compose_expanded_collapsible PASSED [ 38%] tests/test_collapsible.py::test_collapsible_collapsed_contents_display_false PASSED [ 38%] tests/test_collapsible.py::test_collapsible_expanded_contents_display_true PASSED [ 38%] tests/test_collapsible.py::test_toggle_title PASSED [ 38%] tests/test_collapsible.py::test_toggle_message PASSED [ 38%] tests/test_collapsible.py::test_expand_message PASSED [ 38%] tests/test_collapsible.py::test_expand_via_watcher_message PASSED [ 38%] tests/test_collapsible.py::test_collapse_message PASSED [ 38%] tests/test_collapsible.py::test_collapse_via_watcher_message PASSED [ 38%] tests/test_collapsible.py::test_collapsible_title_reactive_change PASSED [ 38%] tests/test_color.py::test_rich_color PASSED [ 38%] tests/test_color.py::test_normalized PASSED [ 38%] tests/test_color.py::test_clamped PASSED [ 38%] tests/test_color.py::test_css PASSED [ 38%] tests/test_color.py::test_monochrome PASSED [ 38%] tests/test_color.py::test_rgb PASSED [ 38%] tests/test_color.py::test_hsl PASSED [ 38%] tests/test_color.py::test_color_brightness PASSED [ 38%] tests/test_color.py::test_color_hex PASSED [ 38%] tests/test_color.py::test_color_hex6 PASSED [ 38%] tests/test_color.py::test_color_css PASSED [ 38%] tests/test_color.py::test_color_with_alpha PASSED [ 38%] tests/test_color.py::test_multiply_alpha PASSED [ 38%] tests/test_color.py::test_color_blend PASSED [ 38%] tests/test_color.py::test_color_parse[#000000-expected0] PASSED [ 39%] tests/test_color.py::test_color_parse[#ffffff-expected1] PASSED [ 39%] tests/test_color.py::test_color_parse[#FFFFFF-expected2] PASSED [ 39%] tests/test_color.py::test_color_parse[#fab-expected3] PASSED [ 39%] tests/test_color.py::test_color_parse[#fab0-expected4] PASSED [ 39%] tests/test_color.py::test_color_parse[#020304ff-expected5] PASSED [ 39%] tests/test_color.py::test_color_parse[#02030400-expected6] PASSED [ 39%] tests/test_color.py::test_color_parse[#0203040f-expected7] PASSED [ 39%] tests/test_color.py::test_color_parse[rgb(0,0,0)-expected8] PASSED [ 39%] tests/test_color.py::test_color_parse[rgb(255,255,255)-expected9] PASSED [ 39%] tests/test_color.py::test_color_parse[rgba(255,255,255,1)-expected10] PASSED [ 39%] tests/test_color.py::test_color_parse[rgb(2,3,4)-expected11] PASSED [ 39%] tests/test_color.py::test_color_parse[rgba(2,3,4,1.0)-expected12] PASSED [ 39%] tests/test_color.py::test_color_parse[rgba(2,3,4,0.058823529411764705)-expected13] PASSED [ 39%] tests/test_color.py::test_color_parse[hsl(45,25%,25%)-expected14] PASSED [ 39%] tests/test_color.py::test_color_parse[hsla(45,25%,25%,0.35)-expected15] PASSED [ 39%] tests/test_color.py::test_color_parse_input_has_spaces[rgb( 300, 300 , 300 )-output0] PASSED [ 39%] tests/test_color.py::test_color_parse_input_has_spaces[rgba( 2 , 3 , 4, 1.0 )-output1] PASSED [ 39%] tests/test_color.py::test_color_parse_input_has_spaces[hsl( 45, 25% , 25% )-output2] PASSED [ 39%] tests/test_color.py::test_color_parse_input_has_spaces[hsla( 45, 25% , 25%, 0.35 )-output3] PASSED [ 39%] tests/test_color.py::test_color_parse_clamp[rgb(300, 300, 300)-output0] PASSED [ 39%] tests/test_color.py::test_color_parse_clamp[rgba(300, 300, 300, 300)-output1] PASSED [ 39%] tests/test_color.py::test_color_parse_clamp[hsl(400, 200%, 250%)-output2] PASSED [ 39%] tests/test_color.py::test_color_parse_clamp[hsla(400, 200%, 250%, 1.9)-output3] PASSED [ 39%] tests/test_color.py::test_color_parse_hsl_negative_degrees PASSED [ 39%] tests/test_color.py::test_color_parse_hsla_negative_degrees PASSED [ 39%] tests/test_color.py::test_color_parse_color PASSED [ 39%] tests/test_color.py::test_color_add PASSED [ 40%] tests/test_color.py::test_color_darken PASSED [ 40%] tests/test_color.py::test_color_lighten PASSED [ 40%] tests/test_color.py::test_rgb_to_lab[10-23-73-10.245-15.913--32.672] PASSED [ 40%] tests/test_color.py::test_rgb_to_lab[200-34-123-45.438-67.75--8.008] PASSED [ 40%] tests/test_color.py::test_rgb_to_lab[0-0-0-0-0-0] PASSED [ 40%] tests/test_color.py::test_rgb_to_lab[255-255-255-100-0-0] PASSED [ 40%] tests/test_color.py::test_lab_to_rgb[10-23-73-10.245-15.913--32.672] PASSED [ 40%] tests/test_color.py::test_lab_to_rgb[200-34-123-45.438-67.75--8.008] PASSED [ 40%] tests/test_color.py::test_lab_to_rgb[0-0-0-0-0-0] PASSED [ 40%] tests/test_color.py::test_lab_to_rgb[255-255-255-100-0-0] PASSED [ 40%] tests/test_color.py::test_rgb_lab_rgb_roundtrip PASSED [ 40%] tests/test_color.py::test_inverse PASSED [ 40%] tests/test_color.py::test_gradient_errors PASSED [ 40%] tests/test_color.py::test_gradient PASSED [ 40%] tests/test_color.py::test_is_transparent PASSED [ 40%] tests/test_color.py::test_tint[base0-tint0-expected0] PASSED [ 40%] tests/test_color.py::test_tint[base1-tint1-expected1] PASSED [ 40%] tests/test_color.py::test_tint[base2-tint2-expected2] PASSED [ 40%] tests/test_compositor_regions_to_spans.py::test_regions_to_ranges_no_regions PASSED [ 40%] tests/test_compositor_regions_to_spans.py::test_regions_to_ranges_single_region PASSED [ 40%] tests/test_compositor_regions_to_spans.py::test_regions_to_ranges_partially_overlapping_regions PASSED [ 40%] tests/test_compositor_regions_to_spans.py::test_regions_to_ranges_fully_overlapping_regions PASSED [ 40%] tests/test_compositor_regions_to_spans.py::test_regions_to_ranges_disjoint_regions_different_lines PASSED [ 40%] tests/test_compositor_regions_to_spans.py::test_regions_to_ranges_disjoint_regions_same_line PASSED [ 40%] tests/test_compositor_regions_to_spans.py::test_regions_to_ranges_directly_adjacent_ranges_merged PASSED [ 40%] tests/test_concurrency.py::test_call_from_thread_app_not_running PASSED [ 40%] tests/test_concurrency.py::test_call_from_thread PASSED [ 41%] tests/test_constants.py::test_environ_int PASSED [ 41%] tests/test_constants.py::test_environ_bool PASSED [ 41%] tests/test_constants.py::test_environ_port PASSED [ 41%] tests/test_containers.py::test_horizontal_vs_horizontalscroll_scrolling PASSED [ 41%] tests/test_containers.py::test_vertical_vs_verticalscroll_scrolling PASSED [ 41%] tests/test_containers.py::test_center_container PASSED [ 41%] tests/test_containers.py::test_middle_container PASSED [ 41%] tests/test_containers.py::test_scrollbar_zero_thickness PASSED [ 41%] tests/test_content_switcher.py::test_no_initial_display PASSED [ 41%] tests/test_content_switcher.py::test_initial_display PASSED [ 41%] tests/test_content_switcher.py::test_no_initial_display_then_set PASSED [ 41%] tests/test_content_switcher.py::test_initial_display_then_change PASSED [ 41%] tests/test_content_switcher.py::test_initial_display_then_hide PASSED [ 41%] tests/test_content_switcher.py::test_initial_display_unknown_id XFAILs related to https://github.com/Textualize/textual/issues/1972) [ 41%] tests/test_content_switcher.py::test_set_current_to_unknown_id PASSED [ 41%] tests/test_content_switcher.py::test_add_content PASSED [ 41%] tests/test_count_parameters.py::test_functions PASSED [ 41%] tests/test_count_parameters.py::test_methods PASSED [ 41%] tests/test_count_parameters.py::test_partials PASSED [ 41%] tests/test_dark_toggle.py::test_toggle_dark_on_load PASSED [ 41%] tests/test_dark_toggle.py::test_toggle_dark_on_mount PASSED [ 41%] tests/test_dark_toggle.py::test_toggle_dark_in_action PASSED [ 41%] tests/test_data_bind.py::test_data_binding PASSED [ 41%] tests/test_data_bind.py::test_data_binding_missing_reactive PASSED [ 41%] tests/test_data_table.py::test_datatable_message_emission PASSED [ 41%] tests/test_data_table.py::test_empty_table_interactions PASSED [ 41%] tests/test_data_table.py::test_cursor_movement_with_home_pagedown_etc[True] PASSED [ 42%] tests/test_data_table.py::test_cursor_movement_with_home_pagedown_etc[False] PASSED [ 42%] tests/test_data_table.py::test_add_rows PASSED [ 42%] tests/test_data_table.py::test_add_rows_user_defined_keys PASSED [ 42%] tests/test_data_table.py::test_add_row_duplicate_key PASSED [ 42%] tests/test_data_table.py::test_add_row_too_many_values PASSED [ 42%] tests/test_data_table.py::test_add_column_duplicate_key PASSED [ 42%] tests/test_data_table.py::test_add_column_with_width PASSED [ 42%] tests/test_data_table.py::test_add_columns PASSED [ 42%] tests/test_data_table.py::test_add_columns_user_defined_keys PASSED [ 42%] tests/test_data_table.py::test_remove_row PASSED [ 42%] tests/test_data_table.py::test_remove_row_and_update PASSED [ 42%] tests/test_data_table.py::test_remove_column PASSED [ 42%] tests/test_data_table.py::test_remove_column_and_update PASSED [ 42%] tests/test_data_table.py::test_clear PASSED [ 42%] tests/test_data_table.py::test_column_labels PASSED [ 42%] tests/test_data_table.py::test_initial_column_widths PASSED [ 42%] tests/test_data_table.py::test_get_cell_returns_value_at_cell PASSED [ 42%] tests/test_data_table.py::test_get_cell_invalid_row_key PASSED [ 42%] tests/test_data_table.py::test_get_cell_invalid_column_key PASSED [ 42%] tests/test_data_table.py::test_get_cell_coordinate_returns_coordinate PASSED [ 42%] tests/test_data_table.py::test_get_cell_coordinate_invalid_row_key PASSED [ 42%] tests/test_data_table.py::test_get_cell_coordinate_invalid_column_key PASSED [ 42%] tests/test_data_table.py::test_get_cell_at_returns_value_at_cell PASSED [ 42%] tests/test_data_table.py::test_get_cell_at_exception PASSED [ 42%] tests/test_data_table.py::test_get_row PASSED [ 42%] tests/test_data_table.py::test_get_row_invalid_row_key PASSED [ 43%] tests/test_data_table.py::test_get_row_at PASSED [ 43%] tests/test_data_table.py::test_get_row_at_invalid_index[-1] PASSED [ 43%] tests/test_data_table.py::test_get_row_at_invalid_index[2] PASSED [ 43%] tests/test_data_table.py::test_get_row_index_returns_index PASSED [ 43%] tests/test_data_table.py::test_get_row_index_invalid_row_key PASSED [ 43%] tests/test_data_table.py::test_get_column PASSED [ 43%] tests/test_data_table.py::test_get_column_invalid_key PASSED [ 43%] tests/test_data_table.py::test_get_column_at PASSED [ 43%] tests/test_data_table.py::test_get_column_at_invalid_index[-1] PASSED [ 43%] tests/test_data_table.py::test_get_column_at_invalid_index[5] PASSED [ 43%] tests/test_data_table.py::test_get_column_index_returns_index PASSED [ 43%] tests/test_data_table.py::test_get_column_index_invalid_column_key PASSED [ 43%] tests/test_data_table.py::test_update_cell_cell_exists PASSED [ 43%] tests/test_data_table.py::test_update_cell_cell_doesnt_exist PASSED [ 43%] tests/test_data_table.py::test_update_cell_invalid_column_key PASSED [ 43%] tests/test_data_table.py::test_update_cell_at_coordinate_exists PASSED [ 43%] tests/test_data_table.py::test_update_cell_at_coordinate_doesnt_exist PASSED [ 43%] tests/test_data_table.py::test_update_cell_at_column_width[A-BB-3] PASSED [ 43%] tests/test_data_table.py::test_update_cell_at_column_width[1234567-1234-7] PASSED [ 43%] tests/test_data_table.py::test_update_cell_at_column_width[12345-123-5] PASSED [ 43%] tests/test_data_table.py::test_update_cell_at_column_width[12345-123456789-9] PASSED [ 43%] tests/test_data_table.py::test_coordinate_to_cell_key PASSED [ 43%] tests/test_data_table.py::test_coordinate_to_cell_key_invalid_coordinate PASSED [ 43%] tests/test_data_table.py::test_datatable_click_cell_cursor PASSED [ 43%] tests/test_data_table.py::test_click_row_cursor PASSED [ 43%] tests/test_data_table.py::test_click_column_cursor PASSED [ 43%] tests/test_data_table.py::test_hover_coordinate PASSED [ 44%] tests/test_data_table.py::test_hover_mouse_leave PASSED [ 44%] tests/test_data_table.py::test_header_selected PASSED [ 44%] tests/test_data_table.py::test_row_label_selected PASSED [ 44%] tests/test_data_table.py::test_sort_coordinate_and_key_access PASSED [ 44%] tests/test_data_table.py::test_sort_reverse_coordinate_and_key_access PASSED [ 44%] tests/test_data_table.py::test_cell_cursor_highlight_events PASSED [ 44%] tests/test_data_table.py::test_row_cursor_highlight_events PASSED [ 44%] tests/test_data_table.py::test_column_cursor_highlight_events PASSED [ 44%] tests/test_data_table.py::test_reuse_row_key_after_clear PASSED [ 44%] tests/test_data_table.py::test_reuse_column_key_after_clear PASSED [ 44%] tests/test_data_table.py::test_key_equals_equivalent_string PASSED [ 44%] tests/test_data_table.py::test_key_doesnt_match_non_equal_string PASSED [ 44%] tests/test_data_table.py::test_key_equals_self PASSED [ 44%] tests/test_data_table.py::test_key_string_lookup PASSED [ 44%] tests/test_data_table.py::test_scrolling_cursor_into_view PASSED [ 44%] tests/test_data_table.py::test_move_cursor PASSED [ 44%] tests/test_data_table.py::test_unset_hover_highlight_when_no_table_cell_under_mouse PASSED [ 44%] tests/test_data_table.py::test_sort_by_all_columns_no_key PASSED [ 44%] tests/test_data_table.py::test_sort_by_multiple_columns_no_key PASSED [ 44%] tests/test_data_table.py::test_sort_by_function_sum PASSED [ 44%] tests/test_data_table.py::test_add_row_auto_height[hey there-1] PASSED [ 44%] tests/test_data_table.py::test_add_row_auto_height[cell1-1] PASSED [ 44%] tests/test_data_table.py::test_add_row_auto_height[cell2-2] PASSED [ 44%] tests/test_data_table.py::test_add_row_auto_height[cell3-4] PASSED [ 44%] tests/test_data_table.py::test_add_row_auto_height[1\n2\n3\n4\n5\n6\n7-7] PASSED [ 44%] tests/test_data_table.py::test_add_row_expands_column_widths PASSED [ 44%] tests/test_data_table.py::test_cell_padding_updates_virtual_size PASSED [ 45%] tests/test_data_table.py::test_cell_padding_cannot_be_negative PASSED [ 45%] tests/test_data_table.py::test_move_cursor_respects_animate_parameter PASSED [ 45%] tests/test_data_table.py::test_clicking_border_link_doesnt_crash PASSED [ 45%] tests/test_disabled.py::test_all_initially_enabled PASSED [ 45%] tests/test_disabled.py::test_enabled_widgets_have_enabled_pseudo_class PASSED [ 45%] tests/test_disabled.py::test_all_individually_disabled PASSED [ 45%] tests/test_disabled.py::test_disabled_widgets_have_disabled_pseudo_class PASSED [ 45%] tests/test_disabled.py::test_disable_via_container PASSED [ 45%] tests/test_disabled.py::test_children_loses_focus_if_container_is_disabled[Button] PASSED [ 45%] tests/test_disabled.py::test_children_loses_focus_if_container_is_disabled[Checkbox] PASSED [ 45%] tests/test_disabled.py::test_children_loses_focus_if_container_is_disabled[DataTable] PASSED [ 45%] tests/test_disabled.py::test_children_loses_focus_if_container_is_disabled[DirectoryTree] PASSED [ 45%] tests/test_disabled.py::test_children_loses_focus_if_container_is_disabled[Input] PASSED [ 45%] tests/test_disabled.py::test_children_loses_focus_if_container_is_disabled[ListView] PASSED [ 45%] tests/test_disabled.py::test_children_loses_focus_if_container_is_disabled[OptionList] PASSED [ 45%] tests/test_disabled.py::test_children_loses_focus_if_container_is_disabled[RadioSet] PASSED [ 45%] tests/test_disabled.py::test_children_loses_focus_if_container_is_disabled[Select] PASSED [ 45%] tests/test_disabled.py::test_children_loses_focus_if_container_is_disabled[Switch] PASSED [ 45%] tests/test_dom.py::test_display_default PASSED [ 45%] tests/test_dom.py::test_display_set_bool[True-block] PASSED [ 45%] tests/test_dom.py::test_display_set_bool[False-none] PASSED [ 45%] tests/test_dom.py::test_display_set_bool[block-block] PASSED [ 45%] tests/test_dom.py::test_display_set_bool[none-none] PASSED [ 45%] tests/test_dom.py::test_display_set_invalid_value PASSED [ 45%] tests/test_dom.py::test_validate PASSED [ 45%] tests/test_dom.py::test_classes_setter PASSED [ 45%] tests/test_dom.py::test_classes_setter_iterable PASSED [ 46%] tests/test_dom.py::test_classes_set_classes PASSED [ 46%] tests/test_dom.py::test_inherited_bindings PASSED [ 46%] tests/test_dom.py::test__get_default_css PASSED [ 46%] tests/test_dom.py::test_component_classes_inheritance PASSED [ 46%] tests/test_dom.py::test_walk_children_depth PASSED [ 46%] tests/test_dom.py::test_walk_children_with_self_depth PASSED [ 46%] tests/test_dom.py::test_walk_children_breadth PASSED [ 46%] tests/test_dom.py::test_walk_children_with_self_breadth PASSED [ 46%] tests/test_dom.py::test_id_validation[ bad] PASSED [ 46%] tests/test_dom.py::test_id_validation[ terrible ] PASSED [ 46%] tests/test_dom.py::test_id_validation[worse! ] PASSED [ 46%] tests/test_dom.py::test_id_validation[&ersand] PASSED [ 46%] tests/test_dom.py::test_id_validation[amper&sand] PASSED [ 46%] tests/test_dom.py::test_id_validation[ampersand&] PASSED [ 46%] tests/test_dom.py::test_id_validation[2_leading_digits] PASSED [ 46%] tests/test_dom.py::test_id_validation[\xe1gua] PASSED [ 46%] tests/test_dom.py::test_id_validation[c\xe3o] PASSED [ 46%] tests/test_dom.py::test_id_validation[@'/.23] PASSED [ 46%] tests/test_driver.py::test_driver_mouse_down_up_click PASSED [ 46%] tests/test_driver.py::test_driver_mouse_down_up_click_widget PASSED [ 46%] tests/test_driver.py::test_driver_mouse_down_drag_inside_widget_up_click PASSED [ 46%] tests/test_driver.py::test_driver_mouse_down_drag_outside_widget_up_click PASSED [ 46%] tests/test_duration.py::test_parse PASSED [ 46%] tests/test_dynamic_bindings.py::test_dynamic_disabled PASSED [ 46%] tests/test_easing.py::test_coverage PASSED [ 46%] tests/test_easing.py::test_easings PASSED [ 47%] tests/test_eta.py::test_basics PASSED [ 47%] tests/test_eta.py::test_speed PASSED [ 47%] tests/test_eta.py::test_get_progress_at PASSED [ 47%] tests/test_eta.py::test_eta PASSED [ 47%] tests/test_expand_tabs.py::test_expand_tabs_inline[ b ar - b ar ] PASSED [ 47%] tests/test_expand_tabs.py::test_expand_tabs_inline[\tbar- bar] PASSED [ 47%] tests/test_expand_tabs.py::test_expand_tabs_inline[\tbar\t- bar ] PASSED [ 47%] tests/test_expand_tabs.py::test_expand_tabs_inline[\tr\t- r ] PASSED [ 47%] tests/test_expand_tabs.py::test_expand_tabs_inline[1\tbar-1 bar] PASSED [ 47%] tests/test_expand_tabs.py::test_expand_tabs_inline[12\tbar-12 bar] PASSED [ 47%] tests/test_expand_tabs.py::test_expand_tabs_inline[123\tbar-123 bar] PASSED [ 47%] tests/test_expand_tabs.py::test_expand_tabs_inline[1234\tbar-1234 bar] PASSED [ 47%] tests/test_expand_tabs.py::test_expand_tabs_inline[\U0001f4a9\tbar-\U0001f4a9 bar] PASSED [ 47%] tests/test_expand_tabs.py::test_expand_tabs_inline[\U0001f4a9\U0001f4a9\tbar-\U0001f4a9\U0001f4a9 bar] PASSED [ 47%] tests/test_expand_tabs.py::test_expand_tabs_inline[\U0001f4a9\U0001f4a9\U0001f4a9\tbar-\U0001f4a9\U0001f4a9\U0001f4a9 bar] PASSED [ 47%] tests/test_expand_tabs.py::test_expand_tabs_inline[F\U0001f4a9\tbar-F\U0001f4a9 bar] PASSED [ 47%] tests/test_expand_tabs.py::test_expand_tabs_inline[F\U0001f4a9O\tbar-F\U0001f4a9O bar] PASSED [ 47%] tests/test_expand_tabs.py::test_get_tab_widths PASSED [ 47%] tests/test_file_monitor.py::test_repr PASSED [ 47%] tests/test_file_monitor.py::test_file_never_found PASSED [ 47%] tests/test_file_monitor.py::test_file_deletion PASSED [ 47%] tests/test_focus.py::test_focus_chain PASSED [ 47%] tests/test_focus.py::test_allow_focus PASSED [ 47%] tests/test_focus.py::test_focus_next_and_previous PASSED [ 47%] tests/test_focus.py::test_focus_next_wrap_around PASSED [ 47%] tests/test_focus.py::test_focus_previous_wrap_around PASSED [ 47%] tests/test_focus.py::test_wrap_around_selector PASSED [ 48%] tests/test_focus.py::test_no_focus_empty_selector PASSED [ 48%] tests/test_focus.py::test_focus_next_and_previous_with_type_selector PASSED [ 48%] tests/test_focus.py::test_focus_next_and_previous_with_str_selector PASSED [ 48%] tests/test_focus.py::test_focus_next_and_previous_with_type_selector_without_self PASSED [ 48%] tests/test_focus.py::test_focus_next_and_previous_with_str_selector_without_self PASSED [ 48%] tests/test_focus.py::test_focus_does_not_move_to_invisible_widgets PASSED [ 48%] tests/test_focus.py::test_focus_moves_to_visible_widgets_inside_invisible_containers PASSED [ 48%] tests/test_focus.py::test_focus_chain_handles_inherited_visibility PASSED [ 48%] tests/test_focus.py::test_mouse_down_gives_focus PASSED [ 48%] tests/test_focus.py::test_mouse_up_does_not_give_focus PASSED [ 48%] tests/test_focus.py::test_focus_pseudo_class PASSED [ 48%] tests/test_focus.py::test_get_focusable_widget_at PASSED [ 48%] tests/test_freeze.py::test_freeze PASSED [ 48%] tests/test_fuzzy.py::test_match PASSED [ 48%] tests/test_fuzzy.py::test_highlight PASSED [ 48%] tests/test_gc.py::test_gc XFAIL [ 48%] tests/test_geometry.py::test_dimensions_region PASSED [ 48%] tests/test_geometry.py::test_dimensions_contains PASSED [ 48%] tests/test_geometry.py::test_dimensions_contains_point PASSED [ 48%] tests/test_geometry.py::test_dimensions_contains_special PASSED [ 48%] tests/test_geometry.py::test_dimensions_bool PASSED [ 48%] tests/test_geometry.py::test_dimensions_area PASSED [ 48%] tests/test_geometry.py::test_clamp PASSED [ 48%] tests/test_geometry.py::test_offset_bool PASSED [ 48%] tests/test_geometry.py::test_offset_is_origin PASSED [ 48%] tests/test_geometry.py::test_clamped PASSED [ 48%] tests/test_geometry.py::test_offset_add PASSED [ 49%] tests/test_geometry.py::test_offset_sub PASSED [ 49%] tests/test_geometry.py::test_offset_neg PASSED [ 49%] tests/test_geometry.py::test_offset_mul PASSED [ 49%] tests/test_geometry.py::test_offset_blend PASSED [ 49%] tests/test_geometry.py::test_offset_get_distance_to PASSED [ 49%] tests/test_geometry.py::test_region_null PASSED [ 49%] tests/test_geometry.py::test_region_from_union PASSED [ 49%] tests/test_geometry.py::test_region_from_offset PASSED [ 49%] tests/test_geometry.py::test_get_scroll_to_visible[window0-region0-scroll0] PASSED [ 49%] tests/test_geometry.py::test_get_scroll_to_visible[window1-region1-scroll1] PASSED [ 49%] tests/test_geometry.py::test_get_scroll_to_visible[window2-region2-scroll2] PASSED [ 49%] tests/test_geometry.py::test_region_area PASSED [ 49%] tests/test_geometry.py::test_region_size PASSED [ 49%] tests/test_geometry.py::test_region_origin PASSED [ 49%] tests/test_geometry.py::test_region_bottom_left PASSED [ 49%] tests/test_geometry.py::test_region_top_right PASSED [ 49%] tests/test_geometry.py::test_region_bottom_right PASSED [ 49%] tests/test_geometry.py::test_region_add PASSED [ 49%] tests/test_geometry.py::test_region_sub PASSED [ 49%] tests/test_geometry.py::test_region_at_offset PASSED [ 49%] tests/test_geometry.py::test_crop_size PASSED [ 49%] tests/test_geometry.py::test_region_overlaps PASSED [ 49%] tests/test_geometry.py::test_region_contains PASSED [ 49%] tests/test_geometry.py::test_region_contains_point PASSED [ 49%] tests/test_geometry.py::test_region_contains_region PASSED [ 49%] tests/test_geometry.py::test_region_translate PASSED [ 50%] tests/test_geometry.py::test_region_contains_special PASSED [ 50%] tests/test_geometry.py::test_clip PASSED [ 50%] tests/test_geometry.py::test_region_shrink PASSED [ 50%] tests/test_geometry.py::test_region_grow PASSED [ 50%] tests/test_geometry.py::test_region_intersection PASSED [ 50%] tests/test_geometry.py::test_region_union PASSED [ 50%] tests/test_geometry.py::test_size_add PASSED [ 50%] tests/test_geometry.py::test_size_sub PASSED [ 50%] tests/test_geometry.py::test_size_line_range PASSED [ 50%] tests/test_geometry.py::test_region_x_extents PASSED [ 50%] tests/test_geometry.py::test_region_y_extents PASSED [ 50%] tests/test_geometry.py::test_region_x_max PASSED [ 50%] tests/test_geometry.py::test_region_y_max PASSED [ 50%] tests/test_geometry.py::test_region_columns_range PASSED [ 50%] tests/test_geometry.py::test_region_lines_range PASSED [ 50%] tests/test_geometry.py::test_region_reset_offset PASSED [ 50%] tests/test_geometry.py::test_region_expand PASSED [ 50%] tests/test_geometry.py::test_spacing_bool PASSED [ 50%] tests/test_geometry.py::test_spacing_width PASSED [ 50%] tests/test_geometry.py::test_spacing_height PASSED [ 50%] tests/test_geometry.py::test_spacing_top_left PASSED [ 50%] tests/test_geometry.py::test_spacing_bottom_right PASSED [ 50%] tests/test_geometry.py::test_spacing_totals PASSED [ 50%] tests/test_geometry.py::test_spacing_css PASSED [ 50%] tests/test_geometry.py::test_spacing_unpack PASSED [ 50%] tests/test_geometry.py::test_spacing_add PASSED [ 50%] tests/test_geometry.py::test_spacing_sub PASSED [ 51%] tests/test_geometry.py::test_spacing_convenience_constructors PASSED [ 51%] tests/test_geometry.py::test_split PASSED [ 51%] tests/test_geometry.py::test_split_negative PASSED [ 51%] tests/test_geometry.py::test_split_vertical PASSED [ 51%] tests/test_geometry.py::test_split_vertical_negative PASSED [ 51%] tests/test_geometry.py::test_split_horizontal PASSED [ 51%] tests/test_geometry.py::test_split_horizontal_negative PASSED [ 51%] tests/test_geometry.py::test_translate_inside PASSED [ 51%] tests/test_geometry.py::test_inflect PASSED [ 51%] tests/test_geometry.py::test_size_with_height PASSED [ 51%] tests/test_geometry.py::test_size_with_width PASSED [ 51%] tests/test_geometry.py::test_offset_clamp PASSED [ 51%] tests/test_geometry.py::test_size_clamp_offset PASSED [ 51%] tests/test_geometry.py::test_get_spacing_between[region10-region20-expected0] PASSED [ 51%] tests/test_geometry.py::test_get_spacing_between[region11-region21-expected1] PASSED [ 51%] tests/test_geometry.py::test_constrain[none-none-margin0-region0-container0-expected0] PASSED [ 51%] tests/test_geometry.py::test_constrain[inside-inside-margin1-region1-container1-expected1] PASSED [ 51%] tests/test_geometry.py::test_constrain[inside-inside-margin2-region2-container2-expected2] PASSED [ 51%] tests/test_geometry.py::test_constrain[inside-inflect-margin3-region3-container3-expected3] PASSED [ 51%] tests/test_header.py::test_screen_title_none_is_ignored PASSED [ 51%] tests/test_header.py::test_screen_title_overrides_app_title PASSED [ 51%] tests/test_header.py::test_screen_title_reactive_updates_title PASSED [ 51%] tests/test_header.py::test_app_title_reactive_does_not_update_title_when_screen_title_is_set PASSED [ 51%] tests/test_header.py::test_screen_sub_title_none_is_ignored PASSED [ 51%] tests/test_header.py::test_screen_sub_title_overrides_app_sub_title PASSED [ 51%] tests/test_header.py::test_screen_sub_title_reactive_updates_sub_title PASSED [ 51%] tests/test_header.py::test_app_sub_title_reactive_does_not_update_sub_title_when_screen_sub_title_is_set PASSED [ 52%] tests/test_immutable_sequence_view.py::test_empty_immutable_sequence PASSED [ 52%] tests/test_immutable_sequence_view.py::test_non_empty_immutable_sequence PASSED [ 52%] tests/test_immutable_sequence_view.py::test_no_assign_to_immutable_sequence PASSED [ 52%] tests/test_immutable_sequence_view.py::test_no_del_from_iummutable_sequence PASSED [ 52%] tests/test_immutable_sequence_view.py::test_get_item_from_immutable_sequence PASSED [ 52%] tests/test_immutable_sequence_view.py::test_get_slice_from_immutable_sequence PASSED [ 52%] tests/test_immutable_sequence_view.py::test_immutable_sequence_contains PASSED [ 52%] tests/test_immutable_sequence_view.py::test_immutable_sequence_index PASSED [ 52%] tests/test_immutable_sequence_view.py::test_reverse_immutable_sequence PASSED [ 52%] tests/test_issue_4248.py::test_issue_4248 PASSED [ 52%] tests/test_keymap.py::test_keymap_default_binding_replaces_old_binding PASSED [ 52%] tests/test_keymap.py::test_keymap_sends_message_when_clash PASSED [ 52%] tests/test_keymap.py::test_keymap_with_unknown_id_is_noop PASSED [ 52%] tests/test_keymap.py::test_keymap_inherited_bindings_same_id PASSED [ 52%] tests/test_keymap.py::test_keymap_child_with_different_id_overridden PASSED [ 52%] tests/test_keys.py::test_character_to_key[1-1] PASSED [ 52%] tests/test_keys.py::test_character_to_key[2-2] PASSED [ 52%] tests/test_keys.py::test_character_to_key[a-a] PASSED [ 52%] tests/test_keys.py::test_character_to_key[z-z] PASSED [ 52%] tests/test_keys.py::test_character_to_key[_-underscore] PASSED [ 52%] tests/test_keys.py::test_character_to_key[ -space] PASSED [ 52%] tests/test_keys.py::test_character_to_key[~-tilde] PASSED [ 52%] tests/test_keys.py::test_character_to_key[?-question_mark] PASSED [ 52%] tests/test_keys.py::test_character_to_key[\xa3-pound_sign] PASSED [ 52%] tests/test_keys.py::test_character_to_key[,-comma] PASSED [ 52%] tests/test_keys.py::test_character_bindings PASSED [ 52%] tests/test_keys.py::test_format_key PASSED [ 53%] tests/test_keys.py::test_get_key_display PASSED [ 53%] tests/test_keys.py::test_key_to_character PASSED [ 53%] tests/test_layout_resolve.py::test_empty PASSED [ 53%] tests/test_layout_resolve.py::test_total_zero PASSED [ 53%] tests/test_layout_resolve.py::test_single PASSED [ 53%] tests/test_layout_resolve.py::test_two PASSED [ 53%] tests/test_layout_resolve.py::test_multiple[10-edges0-result0] PASSED [ 53%] tests/test_layout_resolve.py::test_multiple[10-edges1-result1] PASSED [ 53%] tests/test_layout_resolve.py::test_multiple[10-edges2-result2] PASSED [ 53%] tests/test_layout_resolve.py::test_multiple[10-edges3-result3] PASSED [ 53%] tests/test_layout_resolve.py::test_multiple[10-edges4-result4] PASSED [ 53%] tests/test_layout_resolve.py::test_multiple[10-edges5-result5] PASSED [ 53%] tests/test_layout_resolve.py::test_multiple[10-edges6-result6] PASSED [ 53%] tests/test_layout_resolve.py::test_multiple[2-edges7-result7] PASSED [ 53%] tests/test_layout_resolve.py::test_multiple[2-edges8-result8] PASSED [ 53%] tests/test_layout_resolve.py::test_multiple[18-edges9-result9] PASSED [ 53%] tests/test_lazy.py::test_lazy PASSED [ 53%] tests/test_line_filter.py::test_dim_apply PASSED [ 53%] tests/test_line_split.py::test_split_string_to_lines_and_endings PASSED [ 53%] tests/test_links.py::test_links PASSED [ 53%] tests/test_loading.py::test_loading_disables_and_remove_scrollbars PASSED [ 53%] tests/test_log.py::test_process_line PASSED [ 53%] tests/test_log.py::test_disabled_log_no_attribute_error PASSED [ 53%] tests/test_loop.py::test_loop_first PASSED [ 53%] tests/test_loop.py::test_loop_last PASSED [ 53%] tests/test_loop.py::test_loop_first_last PASSED [ 54%] tests/test_loop.py::test_loop_from_index PASSED [ 54%] tests/test_markdown.py::test_markdown_nodes[-expected_nodes0] PASSED [ 54%] tests/test_markdown.py::test_markdown_nodes[# Hello-expected_nodes1] PASSED [ 54%] tests/test_markdown.py::test_markdown_nodes[## Hello-expected_nodes2] PASSED [ 54%] tests/test_markdown.py::test_markdown_nodes[### Hello-expected_nodes3] PASSED [ 54%] tests/test_markdown.py::test_markdown_nodes[#### Hello-expected_nodes4] PASSED [ 54%] tests/test_markdown.py::test_markdown_nodes[##### Hello-expected_nodes5] PASSED [ 54%] tests/test_markdown.py::test_markdown_nodes[###### Hello-expected_nodes6] PASSED [ 54%] tests/test_markdown.py::test_markdown_nodes[----expected_nodes7] PASSED [ 54%] tests/test_markdown.py::test_markdown_nodes[Hello-expected_nodes8] PASSED [ 54%] tests/test_markdown.py::test_markdown_nodes[Hello\nWorld-expected_nodes9] PASSED [ 54%] tests/test_markdown.py::test_markdown_nodes[> Hello-expected_nodes10] PASSED [ 54%] tests/test_markdown.py::test_markdown_nodes[- One\n-Two-expected_nodes11] PASSED [ 54%] tests/test_markdown.py::test_markdown_nodes[1. One\n2. Two-expected_nodes12] PASSED [ 54%] tests/test_markdown.py::test_markdown_nodes[ 1-expected_nodes13] PASSED [ 54%] tests/test_markdown.py::test_markdown_nodes[```\n1\n```-expected_nodes14] PASSED [ 54%] tests/test_markdown.py::test_markdown_nodes[```python\n1\n```-expected_nodes15] PASSED [ 54%] tests/test_markdown.py::test_markdown_nodes[| One | Two |\n| :- | :- |\n| 1 | 2 |-expected_nodes16] PASSED [ 54%] tests/test_markdown.py::test_markdown_nodes[- One\n```\nTwo\n```\n- Three\n-expected_nodes17] PASSED [ 54%] tests/test_markdown.py::test_softbreak_split_links_rendered_correctly PASSED [ 54%] tests/test_markdown.py::test_load_non_existing_file PASSED [ 54%] tests/test_markdown.py::test_goto_anchor[hello-world-False] PASSED [ 54%] tests/test_markdown.py::test_goto_anchor[hello-there-True] PASSED [ 54%] tests/test_markdown.py::test_update_of_document_posts_table_of_content_update_message PASSED [ 54%] tests/test_markdown.py::test_link_in_markdown_table_posts_message_when_clicked PASSED [ 54%] tests/test_markdown.py::test_markdown_quoting PASSED [ 54%] tests/test_markdownviewer.py::test_markdown_file_viewer_anchor_link[0] PASSED [ 55%] tests/test_markdownviewer.py::test_markdown_file_viewer_anchor_link[1] PASSED [ 55%] tests/test_markdownviewer.py::test_markdown_string_viewer_anchor_link[0] PASSED [ 55%] tests/test_markdownviewer.py::test_markdown_string_viewer_anchor_link[1] PASSED [ 55%] tests/test_markdownviewer.py::test_headings_that_look_like_they_contain_markup[Hey [[/test]]] PASSED [ 55%] tests/test_markdownviewer.py::test_headings_that_look_like_they_contain_markup[[i]Hey there[/i]] PASSED [ 55%] tests/test_masked_input.py::test_missing_required PASSED [ 55%] tests/test_masked_input.py::test_valid_required PASSED [ 55%] tests/test_masked_input.py::test_missing_optional PASSED [ 55%] tests/test_masked_input.py::test_editing PASSED [ 55%] tests/test_masked_input.py::test_key_movement_actions PASSED [ 55%] tests/test_masked_input.py::test_key_modification_actions PASSED [ 55%] tests/test_masked_input.py::test_cursor_word_right_after_last_separator PASSED [ 55%] tests/test_masked_input.py::test_case_conversion_meta_characters PASSED [ 55%] tests/test_masked_input.py::test_case_conversion_override PASSED [ 55%] tests/test_masked_input.py::test_case_conversion_cancel PASSED [ 55%] tests/test_masked_input.py::test_only_separators__raises_ValueError PASSED [ 55%] tests/test_masked_input.py::test_custom_separator_escaping PASSED [ 55%] tests/test_masked_input.py::test_digits_not_required PASSED [ 55%] tests/test_masked_input.py::test_digits_required PASSED [ 55%] tests/test_message_handling.py::test_message_inheritance_namespace PASSED [ 55%] tests/test_message_pump.py::test_dispatch_key_valid_key PASSED [ 55%] tests/test_message_pump.py::test_dispatch_key_valid_key_alias PASSED [ 55%] tests/test_message_pump.py::test_dispatch_key_raises_when_conflicting_handler_aliases PASSED [ 55%] tests/test_message_pump.py::test_message_queue_size PASSED [ 55%] tests/test_message_pump.py::test_prevent PASSED [ 55%] tests/test_message_pump.py::test_prevent_with_call_next PASSED [ 55%] tests/test_message_pump.py::test_prevent_default PASSED [ 56%] tests/test_modal.py::test_modal_pop_screen PASSED [ 56%] tests/test_mount.py::test_render_only_after_mount PASSED [ 56%] tests/test_node_list.py::test_empty_list PASSED [ 56%] tests/test_node_list.py::test_add_one PASSED [ 56%] tests/test_node_list.py::test_length_hint PASSED [ 56%] tests/test_node_list.py::test_repeat_add_one PASSED [ 56%] tests/test_node_list.py::test_insert PASSED [ 56%] tests/test_node_list.py::test_truthy PASSED [ 56%] tests/test_node_list.py::test_contains PASSED [ 56%] tests/test_node_list.py::test_index PASSED [ 56%] tests/test_node_list.py::test_remove PASSED [ 56%] tests/test_node_list.py::test_clear PASSED [ 56%] tests/test_node_list.py::test_listy PASSED [ 56%] tests/test_on.py::test_on_button_pressed PASSED [ 56%] tests/test_on.py::test_on_inheritance PASSED [ 56%] tests/test_on.py::test_on_bad_selector PASSED [ 56%] tests/test_on.py::test_on_no_control PASSED [ 56%] tests/test_on.py::test_on_attribute_not_listed PASSED [ 56%] tests/test_on.py::test_on_arbitrary_attributes PASSED [ 56%] tests/test_on.py::test_fire_on_inherited_message PASSED [ 56%] tests/test_on.py::test_fire_inherited_on_single_handler PASSED [ 56%] tests/test_on.py::test_fire_inherited_on_single_handler_multi_selector PASSED [ 56%] tests/test_on.py::test_fire_inherited_and_on_methods PASSED [ 56%] tests/test_on.py::test_fire_on_inherited_message_plus_mixins PASSED [ 56%] tests/test_on.py::test_on_with_enter_and_leave_events PASSED [ 56%] tests/test_overflow_change.py::test_overflow_change_updates_virtual_size_appropriately PASSED [ 56%] tests/test_parser.py::test_read1 PASSED [ 57%] tests/test_parser.py::test_read PASSED [ 57%] tests/test_partition.py::test_partition PASSED [ 57%] tests/test_paste.py::test_paste_app PASSED [ 57%] tests/test_paste.py::test_empty_paste PASSED [ 57%] tests/test_path.py::test_css_paths_of_various_types[RelativePathObjectApp-expected_css_path_attribute0] PASSED [ 57%] tests/test_path.py::test_css_paths_of_various_types[RelativePathStrApp-expected_css_path_attribute1] PASSED [ 57%] tests/test_path.py::test_css_paths_of_various_types[AbsolutePathObjectApp-expected_css_path_attribute2] PASSED [ 57%] tests/test_path.py::test_css_paths_of_various_types[AbsolutePathStrApp-expected_css_path_attribute3] PASSED [ 57%] tests/test_path.py::test_css_paths_of_various_types[ListPathApp-expected_css_path_attribute4] PASSED [ 57%] tests/test_pilot.py::test_pilot_press_ascii_chars PASSED [ 57%] tests/test_pilot.py::test_pilot_exception_catching_app_compose PASSED [ 57%] tests/test_pilot.py::test_pilot_exception_catching_widget_compose PASSED [ 57%] tests/test_pilot.py::test_pilot_exception_catching_action PASSED [ 57%] tests/test_pilot.py::test_pilot_exception_catching_worker PASSED [ 57%] tests/test_pilot.py::test_pilot_click_screen PASSED [ 57%] tests/test_pilot.py::test_pilot_hover_screen PASSED [ 57%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[click-screen_size0-offset0] PASSED [ 57%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[click-screen_size1-offset1] PASSED [ 57%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[click-screen_size2-offset2] PASSED [ 57%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[click-screen_size3-offset3] PASSED [ 57%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[click-screen_size4-offset4] PASSED [ 57%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[click-screen_size5-offset5] PASSED [ 57%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[click-screen_size6-offset6] PASSED [ 57%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[click-screen_size7-offset7] PASSED [ 57%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[click-screen_size8-offset8] PASSED [ 57%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[click-screen_size9-offset9] PASSED [ 58%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[click-screen_size10-offset10] PASSED [ 58%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[click-screen_size11-offset11] PASSED [ 58%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[click-screen_size12-offset12] PASSED [ 58%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[click-screen_size13-offset13] PASSED [ 58%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[click-screen_size14-offset14] PASSED [ 58%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[click-screen_size15-offset15] PASSED [ 58%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[hover-screen_size16-offset16] PASSED [ 58%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[hover-screen_size17-offset17] PASSED [ 58%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[hover-screen_size18-offset18] PASSED [ 58%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[hover-screen_size19-offset19] PASSED [ 58%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[hover-screen_size20-offset20] PASSED [ 58%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[hover-screen_size21-offset21] PASSED [ 58%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[hover-screen_size22-offset22] PASSED [ 58%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[hover-screen_size23-offset23] PASSED [ 58%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[hover-screen_size24-offset24] PASSED [ 58%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[hover-screen_size25-offset25] PASSED [ 58%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[hover-screen_size26-offset26] PASSED [ 58%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[hover-screen_size27-offset27] PASSED [ 58%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[hover-screen_size28-offset28] PASSED [ 58%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[hover-screen_size29-offset29] PASSED [ 58%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[hover-screen_size30-offset30] PASSED [ 58%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[hover-screen_size31-offset31] PASSED [ 58%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[mouse_down-screen_size32-offset32] PASSED [ 58%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[mouse_down-screen_size33-offset33] PASSED [ 58%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[mouse_down-screen_size34-offset34] PASSED [ 58%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[mouse_down-screen_size35-offset35] PASSED [ 58%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[mouse_down-screen_size36-offset36] PASSED [ 59%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[mouse_down-screen_size37-offset37] PASSED [ 59%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[mouse_down-screen_size38-offset38] PASSED [ 59%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[mouse_down-screen_size39-offset39] PASSED [ 59%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[mouse_down-screen_size40-offset40] PASSED [ 59%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[mouse_down-screen_size41-offset41] PASSED [ 59%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[mouse_down-screen_size42-offset42] PASSED [ 59%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[mouse_down-screen_size43-offset43] PASSED [ 59%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[mouse_down-screen_size44-offset44] PASSED [ 59%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[mouse_down-screen_size45-offset45] PASSED [ 59%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[mouse_down-screen_size46-offset46] PASSED [ 59%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[mouse_down-screen_size47-offset47] PASSED [ 59%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[mouse_up-screen_size48-offset48] PASSED [ 59%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[mouse_up-screen_size49-offset49] PASSED [ 59%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[mouse_up-screen_size50-offset50] PASSED [ 59%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[mouse_up-screen_size51-offset51] PASSED [ 59%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[mouse_up-screen_size52-offset52] PASSED [ 59%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[mouse_up-screen_size53-offset53] PASSED [ 59%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[mouse_up-screen_size54-offset54] PASSED [ 59%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[mouse_up-screen_size55-offset55] PASSED [ 59%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[mouse_up-screen_size56-offset56] PASSED [ 59%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[mouse_up-screen_size57-offset57] PASSED [ 59%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[mouse_up-screen_size58-offset58] PASSED [ 59%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[mouse_up-screen_size59-offset59] PASSED [ 59%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[mouse_up-screen_size60-offset60] PASSED [ 59%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[mouse_up-screen_size61-offset61] PASSED [ 59%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[mouse_up-screen_size62-offset62] PASSED [ 59%] tests/test_pilot.py::test_pilot_target_outside_screen_errors[mouse_up-screen_size63-offset63] PASSED [ 60%] tests/test_pilot.py::test_pilot_target_inside_screen_is_fine_with_correct_coordinate_system[click-offset0] PASSED [ 60%] tests/test_pilot.py::test_pilot_target_inside_screen_is_fine_with_correct_coordinate_system[click-offset1] PASSED [ 60%] tests/test_pilot.py::test_pilot_target_inside_screen_is_fine_with_correct_coordinate_system[click-offset2] PASSED [ 60%] tests/test_pilot.py::test_pilot_target_inside_screen_is_fine_with_correct_coordinate_system[click-offset3] PASSED [ 60%] tests/test_pilot.py::test_pilot_target_inside_screen_is_fine_with_correct_coordinate_system[click-offset4] PASSED [ 60%] tests/test_pilot.py::test_pilot_target_inside_screen_is_fine_with_correct_coordinate_system[click-offset5] PASSED [ 60%] tests/test_pilot.py::test_pilot_target_inside_screen_is_fine_with_correct_coordinate_system[click-offset6] PASSED [ 60%] tests/test_pilot.py::test_pilot_target_inside_screen_is_fine_with_correct_coordinate_system[click-offset7] PASSED [ 60%] tests/test_pilot.py::test_pilot_target_inside_screen_is_fine_with_correct_coordinate_system[click-offset8] PASSED [ 60%] tests/test_pilot.py::test_pilot_target_inside_screen_is_fine_with_correct_coordinate_system[hover-offset9] PASSED [ 60%] tests/test_pilot.py::test_pilot_target_inside_screen_is_fine_with_correct_coordinate_system[hover-offset10] PASSED [ 60%] tests/test_pilot.py::test_pilot_target_inside_screen_is_fine_with_correct_coordinate_system[hover-offset11] PASSED [ 60%] tests/test_pilot.py::test_pilot_target_inside_screen_is_fine_with_correct_coordinate_system[hover-offset12] PASSED [ 60%] tests/test_pilot.py::test_pilot_target_inside_screen_is_fine_with_correct_coordinate_system[hover-offset13] PASSED [ 60%] tests/test_pilot.py::test_pilot_target_inside_screen_is_fine_with_correct_coordinate_system[hover-offset14] PASSED [ 60%] tests/test_pilot.py::test_pilot_target_inside_screen_is_fine_with_correct_coordinate_system[hover-offset15] PASSED [ 60%] tests/test_pilot.py::test_pilot_target_inside_screen_is_fine_with_correct_coordinate_system[hover-offset16] PASSED [ 60%] tests/test_pilot.py::test_pilot_target_inside_screen_is_fine_with_correct_coordinate_system[hover-offset17] PASSED [ 60%] tests/test_pilot.py::test_pilot_target_inside_screen_is_fine_with_correct_coordinate_system[mouse_down-offset18] PASSED [ 60%] tests/test_pilot.py::test_pilot_target_inside_screen_is_fine_with_correct_coordinate_system[mouse_down-offset19] PASSED [ 60%] tests/test_pilot.py::test_pilot_target_inside_screen_is_fine_with_correct_coordinate_system[mouse_down-offset20] PASSED [ 60%] tests/test_pilot.py::test_pilot_target_inside_screen_is_fine_with_correct_coordinate_system[mouse_down-offset21] PASSED [ 60%] tests/test_pilot.py::test_pilot_target_inside_screen_is_fine_with_correct_coordinate_system[mouse_down-offset22] PASSED [ 60%] tests/test_pilot.py::test_pilot_target_inside_screen_is_fine_with_correct_coordinate_system[mouse_down-offset23] PASSED [ 60%] tests/test_pilot.py::test_pilot_target_inside_screen_is_fine_with_correct_coordinate_system[mouse_down-offset24] PASSED [ 60%] tests/test_pilot.py::test_pilot_target_inside_screen_is_fine_with_correct_coordinate_system[mouse_down-offset25] PASSED [ 60%] tests/test_pilot.py::test_pilot_target_inside_screen_is_fine_with_correct_coordinate_system[mouse_down-offset26] PASSED [ 61%] tests/test_pilot.py::test_pilot_target_inside_screen_is_fine_with_correct_coordinate_system[mouse_up-offset27] PASSED [ 61%] tests/test_pilot.py::test_pilot_target_inside_screen_is_fine_with_correct_coordinate_system[mouse_up-offset28] PASSED [ 61%] tests/test_pilot.py::test_pilot_target_inside_screen_is_fine_with_correct_coordinate_system[mouse_up-offset29] PASSED [ 61%] tests/test_pilot.py::test_pilot_target_inside_screen_is_fine_with_correct_coordinate_system[mouse_up-offset30] PASSED [ 61%] tests/test_pilot.py::test_pilot_target_inside_screen_is_fine_with_correct_coordinate_system[mouse_up-offset31] PASSED [ 61%] tests/test_pilot.py::test_pilot_target_inside_screen_is_fine_with_correct_coordinate_system[mouse_up-offset32] PASSED [ 61%] tests/test_pilot.py::test_pilot_target_inside_screen_is_fine_with_correct_coordinate_system[mouse_up-offset33] PASSED [ 61%] tests/test_pilot.py::test_pilot_target_inside_screen_is_fine_with_correct_coordinate_system[mouse_up-offset34] PASSED [ 61%] tests/test_pilot.py::test_pilot_target_inside_screen_is_fine_with_correct_coordinate_system[mouse_up-offset35] PASSED [ 61%] tests/test_pilot.py::test_pilot_target_on_widget_that_is_not_visible_errors[click-#label0] PASSED [ 61%] tests/test_pilot.py::test_pilot_target_on_widget_that_is_not_visible_errors[click-#label90] PASSED [ 61%] tests/test_pilot.py::test_pilot_target_on_widget_that_is_not_visible_errors[click-Button] PASSED [ 61%] tests/test_pilot.py::test_pilot_target_on_widget_that_is_not_visible_errors[hover-#label0] PASSED [ 61%] tests/test_pilot.py::test_pilot_target_on_widget_that_is_not_visible_errors[hover-#label90] PASSED [ 61%] tests/test_pilot.py::test_pilot_target_on_widget_that_is_not_visible_errors[hover-Button] PASSED [ 61%] tests/test_pilot.py::test_pilot_target_on_widget_that_is_not_visible_errors[mouse_down-#label0] PASSED [ 61%] tests/test_pilot.py::test_pilot_target_on_widget_that_is_not_visible_errors[mouse_down-#label90] PASSED [ 61%] tests/test_pilot.py::test_pilot_target_on_widget_that_is_not_visible_errors[mouse_down-Button] PASSED [ 61%] tests/test_pilot.py::test_pilot_target_on_widget_that_is_not_visible_errors[mouse_up-#label0] PASSED [ 61%] tests/test_pilot.py::test_pilot_target_on_widget_that_is_not_visible_errors[mouse_up-#label90] PASSED [ 61%] tests/test_pilot.py::test_pilot_target_on_widget_that_is_not_visible_errors[mouse_up-Button] PASSED [ 61%] tests/test_pilot.py::test_pilot_target_widget_under_another_widget[click] PASSED [ 61%] tests/test_pilot.py::test_pilot_target_widget_under_another_widget[hover] PASSED [ 61%] tests/test_pilot.py::test_pilot_target_widget_under_another_widget[mouse_down] PASSED [ 61%] tests/test_pilot.py::test_pilot_target_widget_under_another_widget[mouse_up] PASSED [ 61%] tests/test_pilot.py::test_pilot_target_visible_widget[click] PASSED [ 62%] tests/test_pilot.py::test_pilot_target_visible_widget[hover] PASSED [ 62%] tests/test_pilot.py::test_pilot_target_visible_widget[mouse_down] PASSED [ 62%] tests/test_pilot.py::test_pilot_target_visible_widget[mouse_up] PASSED [ 62%] tests/test_pilot.py::test_pilot_target_screen_always_true[click-offset0] PASSED [ 62%] tests/test_pilot.py::test_pilot_target_screen_always_true[click-offset1] PASSED [ 62%] tests/test_pilot.py::test_pilot_target_screen_always_true[click-offset2] PASSED [ 62%] tests/test_pilot.py::test_pilot_target_screen_always_true[click-offset3] PASSED [ 62%] tests/test_pilot.py::test_pilot_target_screen_always_true[hover-offset4] PASSED [ 62%] tests/test_pilot.py::test_pilot_target_screen_always_true[hover-offset5] PASSED [ 62%] tests/test_pilot.py::test_pilot_target_screen_always_true[hover-offset6] PASSED [ 62%] tests/test_pilot.py::test_pilot_target_screen_always_true[hover-offset7] PASSED [ 62%] tests/test_pilot.py::test_pilot_target_screen_always_true[mouse_down-offset8] PASSED [ 62%] tests/test_pilot.py::test_pilot_target_screen_always_true[mouse_down-offset9] PASSED [ 62%] tests/test_pilot.py::test_pilot_target_screen_always_true[mouse_down-offset10] PASSED [ 62%] tests/test_pilot.py::test_pilot_target_screen_always_true[mouse_down-offset11] PASSED [ 62%] tests/test_pilot.py::test_pilot_target_screen_always_true[mouse_up-offset12] PASSED [ 62%] tests/test_pilot.py::test_pilot_target_screen_always_true[mouse_up-offset13] PASSED [ 62%] tests/test_pilot.py::test_pilot_target_screen_always_true[mouse_up-offset14] PASSED [ 62%] tests/test_pilot.py::test_pilot_target_screen_always_true[mouse_up-offset15] PASSED [ 62%] tests/test_pilot.py::test_pilot_resize_terminal PASSED [ 62%] tests/test_pilot.py::test_fail_early PASSED [ 62%] tests/test_pilot.py::test_click_by_widget PASSED [ 62%] tests/test_pipe.py::test_deadlock PASSED [ 62%] tests/test_placeholder.py::test_invalid_placeholder_variant PASSED [ 62%] tests/test_placeholder.py::test_invalid_reactive_variant_change PASSED [ 62%] tests/test_progress_bar.py::test_initial_status PASSED [ 62%] tests/test_progress_bar.py::test_advance PASSED [ 63%] tests/test_progress_bar.py::test_advance_backwards PASSED [ 63%] tests/test_progress_bar.py::test_progress_overflow PASSED [ 63%] tests/test_progress_bar.py::test_progress_underflow PASSED [ 63%] tests/test_progress_bar.py::test_non_negative_total PASSED [ 63%] tests/test_progress_bar.py::test_update_total PASSED [ 63%] tests/test_progress_bar.py::test_update_progress PASSED [ 63%] tests/test_progress_bar.py::test_update_advance PASSED [ 63%] tests/test_progress_bar.py::test_update PASSED [ 63%] tests/test_progress_bar.py::test_go_back_to_indeterminate PASSED [ 63%] tests/test_progress_bar.py::test_show_sub_widgets[True-True-True] PASSED [ 63%] tests/test_progress_bar.py::test_show_sub_widgets[True-True-False] PASSED [ 63%] tests/test_progress_bar.py::test_show_sub_widgets[True-False-True] PASSED [ 63%] tests/test_progress_bar.py::test_show_sub_widgets[True-False-False] PASSED [ 63%] tests/test_progress_bar.py::test_show_sub_widgets[False-True-True] PASSED [ 63%] tests/test_progress_bar.py::test_show_sub_widgets[False-True-False] PASSED [ 63%] tests/test_progress_bar.py::test_show_sub_widgets[False-False-True] PASSED [ 63%] tests/test_progress_bar.py::test_show_sub_widgets[False-False-False] PASSED [ 63%] tests/test_progress_bar.py::test_apply_gradient PASSED [ 63%] tests/test_query.py::test_query_errors PASSED [ 63%] tests/test_query.py::test_query PASSED [ 63%] tests/test_query.py::test_query_classes PASSED [ 63%] tests/test_query.py::test_invalid_query PASSED [ 63%] tests/test_query.py::test_universal_selector_doesnt_select_self PASSED [ 63%] tests/test_query.py::test_query_set_styles_invalid_css_raises_error PASSED [ 63%] tests/test_query.py::test_query_set_styles_kwds PASSED [ 63%] tests/test_query.py::test_query_set_styles_css_and_kwds PASSED [ 63%] tests/test_query.py::test_query_set_styles_css PASSED [ 64%] tests/test_query.py::test_query_refresh[args0] PASSED [ 64%] tests/test_query.py::test_query_refresh[args1] PASSED [ 64%] tests/test_query.py::test_query_refresh[args2] PASSED [ 64%] tests/test_query.py::test_query_refresh[args3] PASSED [ 64%] tests/test_query.py::test_query_focus_blur PASSED [ 64%] tests/test_reactive.py::test_watch PASSED [ 64%] tests/test_reactive.py::test_watch_async_init_false PASSED [ 64%] tests/test_reactive.py::test_watch_async_init_true PASSED [ 64%] tests/test_reactive.py::test_watch_init_false_always_update_false PASSED [ 64%] tests/test_reactive.py::test_watch_init_true PASSED [ 64%] tests/test_reactive.py::test_reactive_always_update PASSED [ 64%] tests/test_reactive.py::test_reactive_with_callable_default PASSED [ 64%] tests/test_reactive.py::test_validate_init_true PASSED [ 64%] tests/test_reactive.py::test_validate_init_true_set_before_dom_ready PASSED [ 64%] tests/test_reactive.py::test_reactive_compute_first_time_set PASSED [ 64%] tests/test_reactive.py::test_reactive_method_call_order PASSED [ 64%] tests/test_reactive.py::test_premature_reactive_call PASSED [ 64%] tests/test_reactive.py::test_reactive_inheritance PASSED [ 64%] tests/test_reactive.py::test_compute PASSED [ 64%] tests/test_reactive.py::test_watch_compute PASSED [ 64%] tests/test_reactive.py::test_public_and_private_watch PASSED [ 64%] tests/test_reactive.py::test_private_validate PASSED [ 64%] tests/test_reactive.py::test_public_and_private_validate PASSED [ 64%] tests/test_reactive.py::test_public_and_private_validate_order PASSED [ 64%] tests/test_reactive.py::test_public_and_private_compute PASSED [ 64%] tests/test_reactive.py::test_private_compute PASSED [ 64%] tests/test_reactive.py::test_async_reactive_watch_callbacks_go_on_the_watcher PASSED [ 65%] tests/test_reactive.py::test_sync_reactive_watch_callbacks_go_on_the_watcher PASSED [ 65%] tests/test_reactive.py::test_set_reactive PASSED [ 65%] tests/test_reactive.py::test_no_duplicate_external_watchers PASSED [ 65%] tests/test_reactive.py::test_external_watch_init_does_not_propagate PASSED [ 65%] tests/test_reactive.py::test_external_watch_init_does_not_propagate_to_externals PASSED [ 65%] tests/test_reactive.py::test_message_sender_from_reactive PASSED [ 65%] tests/test_reactive.py::test_mutate_reactive PASSED [ 65%] tests/test_reactive.py::test_mutate_reactive_data_bind PASSED [ 65%] tests/test_resolve.py::test_resolve_empty PASSED [ 65%] tests/test_resolve.py::test_resolve[scalars0-100-0-result0] PASSED [ 65%] tests/test_resolve.py::test_resolve[scalars1-100-0-result1] PASSED [ 65%] tests/test_resolve.py::test_resolve[scalars2-100-1-result2] PASSED [ 65%] tests/test_resolve.py::test_resolve[scalars3-100-1-result3] PASSED [ 65%] tests/test_resolve.py::test_resolve[scalars4-100-0-result4] PASSED [ 65%] tests/test_resolve.py::test_resolve[scalars5-100-1-result5] PASSED [ 65%] tests/test_resolve.py::test_resolve_fraction_unit PASSED [ 65%] tests/test_resolve.py::test_resolve_fraction_unit_stress_test PASSED [ 65%] tests/test_resolve.py::test_resolve_issue_2502 PASSED [ 65%] tests/test_rlock.py::test_simple_lock PASSED [ 65%] tests/test_rlock.py::test_multiple_tasks PASSED [ 65%] tests/test_rule.py::test_invalid_rule_orientation PASSED [ 65%] tests/test_rule.py::test_invalid_rule_line_style PASSED [ 65%] tests/test_rule.py::test_invalid_reactive_rule_orientation_change PASSED [ 65%] tests/test_rule.py::test_invalid_reactive_rule_line_style_change PASSED [ 65%] tests/test_screen_modes.py::test_mode_setup PASSED [ 65%] tests/test_screen_modes.py::test_switch_mode PASSED [ 66%] tests/test_screen_modes.py::test_switch_same_mode PASSED [ 66%] tests/test_screen_modes.py::test_switch_unknown_mode PASSED [ 66%] tests/test_screen_modes.py::test_remove_mode PASSED [ 66%] tests/test_screen_modes.py::test_remove_active_mode PASSED [ 66%] tests/test_screen_modes.py::test_add_mode PASSED [ 66%] tests/test_screen_modes.py::test_add_mode_duplicated PASSED [ 66%] tests/test_screen_modes.py::test_screen_stack_preserved PASSED [ 66%] tests/test_screen_modes.py::test_multiple_mode_callbacks PASSED [ 66%] tests/test_screens.py::test_screen_walk_children PASSED [ 66%] tests/test_screens.py::test_installed_screens PASSED [ 66%] tests/test_screens.py::test_screens PASSED [ 66%] tests/test_screens.py::test_auto_focus_on_screen_if_app_auto_focus_is_none PASSED [ 66%] tests/test_screens.py::test_auto_focus_on_screen_if_app_auto_focus_is_disabled PASSED [ 66%] tests/test_screens.py::test_auto_focus_inheritance PASSED [ 66%] tests/test_screens.py::test_auto_focus_skips_non_focusable_widgets PASSED [ 66%] tests/test_screens.py::test_dismiss_non_top_screen PASSED [ 66%] tests/test_screens.py::test_dismiss_action PASSED [ 66%] tests/test_screens.py::test_dismiss_action_no_argument PASSED [ 66%] tests/test_screens.py::test_switch_screen_no_op PASSED [ 66%] tests/test_screens.py::test_switch_screen_updates_results_callback_stack PASSED [ 66%] tests/test_screens.py::test_screen_receives_mouse_move_events PASSED [ 66%] tests/test_screens.py::test_mouse_move_event_bubbles_to_screen_from_widget PASSED [ 66%] tests/test_screens.py::test_push_screen_wait_for_dismiss PASSED [ 66%] tests/test_screens.py::test_push_screen_wait_for_dismiss_no_worker PASSED [ 66%] tests/test_screens.py::test_default_custom_screen PASSED [ 66%] tests/test_screens.py::test_disallow_screen_instances PASSED [ 66%] tests/test_screens.py::test_worker_cancellation PASSED [ 67%] tests/test_screens.py::test_get_screen_with_expected_type PASSED [ 67%] tests/test_segment_tools.py::test_line_crop PASSED [ 67%] tests/test_segment_tools.py::test_line_crop_emoji PASSED [ 67%] tests/test_segment_tools.py::test_line_crop_edge PASSED [ 67%] tests/test_segment_tools.py::test_line_crop_edge_2 PASSED [ 67%] tests/test_segment_tools.py::test_line_trim_ascii PASSED [ 67%] tests/test_segment_tools.py::test_line_pad PASSED [ 67%] tests/test_segment_tools.py::test_align_lines_vertical_middle PASSED [ 67%] tests/test_segment_tools.py::test_align_lines_top_left PASSED [ 67%] tests/test_segment_tools.py::test_align_lines_top_right PASSED [ 67%] tests/test_segment_tools.py::test_align_lines_perfect_fit_horizontal_left PASSED [ 67%] tests/test_segment_tools.py::test_align_lines_perfect_fit_horizontal_center PASSED [ 67%] tests/test_segment_tools.py::test_align_lines_perfect_fit_horizontal_right PASSED [ 67%] tests/test_shutdown.py::test_shutdown PASSED [ 67%] tests/test_signal.py::test_signal PASSED [ 67%] tests/test_signal.py::test_signal_errors PASSED [ 67%] tests/test_signal.py::test_repr PASSED [ 67%] tests/test_signal.py::test_signal_parameters PASSED [ 67%] tests/test_slug.py::test_simple_slug[test-test] PASSED [ 67%] tests/test_slug.py::test_simple_slug[Test-test] PASSED [ 67%] tests/test_slug.py::test_simple_slug[ Test -test] PASSED [ 67%] tests/test_slug.py::test_simple_slug[-test---test-] PASSED [ 67%] tests/test_slug.py::test_simple_slug[!test!-test] PASSED [ 67%] tests/test_slug.py::test_simple_slug[test!!test-testtest] PASSED [ 67%] tests/test_slug.py::test_simple_slug[test! !test-test-test] PASSED [ 67%] tests/test_slug.py::test_simple_slug[test test-test-test] PASSED [ 67%] tests/test_slug.py::test_simple_slug[test test-test--test] PASSED [ 68%] tests/test_slug.py::test_simple_slug[test test-test----------test] PASSED [ 68%] tests/test_slug.py::test_simple_slug[--test---test] PASSED [ 68%] tests/test_slug.py::test_simple_slug[test---test--] PASSED [ 68%] tests/test_slug.py::test_simple_slug[--test--test-----test--test--] PASSED [ 68%] tests/test_slug.py::test_simple_slug[test!"#$%&'()*+,-./:;<=>?@[]^_`{|}~test-test-_test] PASSED [ 68%] tests/test_slug.py::test_simple_slug[t\xebst-t%C3%ABst] PASSED [ 68%] tests/test_slug.py::test_simple_slug[test\U0001f642test-testtest] PASSED [ 68%] tests/test_slug.py::test_simple_slug[test\U0001f937test-testtest] PASSED [ 68%] tests/test_slug.py::test_simple_slug[test\U0001f937\U0001f3fb\u200d\u2640\ufe0ftest-testtest] PASSED [ 68%] tests/test_slug.py::test_tracked_slugs[test-test] PASSED [ 68%] tests/test_slug.py::test_tracked_slugs[test-test-1] PASSED [ 68%] tests/test_slug.py::test_tracked_slugs[test-test-2] PASSED [ 68%] tests/test_slug.py::test_tracked_slugs[-test---test-] PASSED [ 68%] tests/test_slug.py::test_tracked_slugs[-test---test--1] PASSED [ 68%] tests/test_slug.py::test_tracked_slugs[test!"#$%&'()*+,-./:;<=>?@[]^_`{|}~test-test-_test] PASSED [ 68%] tests/test_slug.py::test_tracked_slugs[test!"#$%&'()*+,-./:;<=>?@[]^_`{|}~test-test-_test-1] PASSED [ 68%] tests/test_slug.py::test_tracked_slugs[t\xebst-t%C3%ABst] PASSED [ 68%] tests/test_slug.py::test_tracked_slugs[t\xebst-t%C3%ABst-1] PASSED [ 68%] tests/test_slug.py::test_tracked_slugs[t\xebst-t%C3%ABst-2] PASSED [ 68%] tests/test_slug.py::test_tracked_slugs[test\U0001f642test-testtest] PASSED [ 68%] tests/test_slug.py::test_tracked_slugs[test\U0001f937test-testtest-1] PASSED [ 68%] tests/test_slug.py::test_tracked_slugs[test\U0001f937\U0001f3fb\u200d\u2640\ufe0ftest-testtest-2] PASSED [ 68%] tests/test_slug.py::test_tracked_slugs[test-test-3] PASSED [ 68%] tests/test_slug.py::test_tracked_slugs[test-test-4] PASSED [ 68%] tests/test_slug.py::test_tracked_slugs[ test -test-5] PASSED [ 68%] tests/test_spatial_map.py::test_region_to_grid[region0-grid0] PASSED [ 68%] tests/test_spatial_map.py::test_region_to_grid[region1-grid1] PASSED [ 69%] tests/test_spatial_map.py::test_region_to_grid[region2-grid2] PASSED [ 69%] tests/test_spatial_map.py::test_region_to_grid[region3-grid3] PASSED [ 69%] tests/test_spatial_map.py::test_region_to_grid[region4-grid4] PASSED [ 69%] tests/test_spatial_map.py::test_get_values_in_region PASSED [ 69%] tests/test_strip.py::test_cell_length PASSED [ 69%] tests/test_strip.py::test_repr PASSED [ 69%] tests/test_strip.py::test_join PASSED [ 69%] tests/test_strip.py::test_bool PASSED [ 69%] tests/test_strip.py::test_iter PASSED [ 69%] tests/test_strip.py::test_len PASSED [ 69%] tests/test_strip.py::test_reversed PASSED [ 69%] tests/test_strip.py::test_eq PASSED [ 69%] tests/test_strip.py::test_adjust_cell_length PASSED [ 69%] tests/test_strip.py::test_extend_cell_length PASSED [ 69%] tests/test_strip.py::test_simplify PASSED [ 69%] tests/test_strip.py::test_apply_filter PASSED [ 69%] tests/test_strip.py::test_style_links PASSED [ 69%] tests/test_strip.py::test_crop PASSED [ 69%] tests/test_strip.py::test_crop_out_of_bounds[foo-crop0-output0] PASSED [ 69%] tests/test_strip.py::test_crop_out_of_bounds[foo-crop1-output1] PASSED [ 69%] tests/test_strip.py::test_crop_out_of_bounds[foo-crop2-output2] PASSED [ 69%] tests/test_strip.py::test_crop_out_of_bounds[foo-crop3-output3] PASSED [ 69%] tests/test_strip.py::test_divide PASSED [ 69%] tests/test_strip.py::test_index_to_cell_position[0-0] PASSED [ 69%] tests/test_strip.py::test_index_to_cell_position[1-1] PASSED [ 69%] tests/test_strip.py::test_index_to_cell_position[2-2] PASSED [ 70%] tests/test_strip.py::test_index_to_cell_position[3-3] PASSED [ 70%] tests/test_strip.py::test_index_to_cell_position[4-4] PASSED [ 70%] tests/test_strip.py::test_index_to_cell_position[5-6] PASSED [ 70%] tests/test_strip.py::test_index_to_cell_position[6-8] PASSED [ 70%] tests/test_strip.py::test_index_to_cell_position[7-10] PASSED [ 70%] tests/test_strip.py::test_index_to_cell_position[8-11] PASSED [ 70%] tests/test_strip.py::test_index_to_cell_position[9-12] PASSED [ 70%] tests/test_strip.py::test_index_to_cell_position[10-13] PASSED [ 70%] tests/test_strip.py::test_index_to_cell_position[11-14] PASSED [ 70%] tests/test_strip.py::test_index_cell_position_no_segments PASSED [ 70%] tests/test_strip.py::test_index_cell_position_index_too_large PASSED [ 70%] tests/test_strip.py::test_text PASSED [ 70%] tests/test_style_importance.py::test_border_importance PASSED [ 70%] tests/test_style_importance.py::test_outline_importance PASSED [ 70%] tests/test_style_importance.py::test_align_importance PASSED [ 70%] tests/test_style_importance.py::test_content_align_importance PASSED [ 70%] tests/test_style_importance.py::test_offset_importance PASSED [ 70%] tests/test_style_importance.py::test_overflow_importance PASSED [ 70%] tests/test_style_importance.py::test_padding_importance PASSED [ 70%] tests/test_style_importance.py::test_scrollbar_size_importance PASSED [ 70%] tests/test_style_inheritance.py::test_text_style_inheritance PASSED [ 70%] tests/test_style_properties.py::test_box_normalization PASSED [ 70%] tests/test_style_properties.py::test_text_style_none_with_others[text_style] PASSED [ 70%] tests/test_style_properties.py::test_text_style_none_with_others[link_style] PASSED [ 70%] tests/test_style_properties.py::test_text_style_set_to_none[text_style] PASSED [ 70%] tests/test_style_properties.py::test_text_style_set_to_none[link_style] PASSED [ 70%] tests/test_styles_cache.py::test_set_dirty PASSED [ 71%] tests/test_styles_cache.py::test_no_styles PASSED [ 71%] tests/test_styles_cache.py::test_border PASSED [ 71%] tests/test_styles_cache.py::test_padding PASSED [ 71%] tests/test_styles_cache.py::test_padding_border PASSED [ 71%] tests/test_styles_cache.py::test_outline PASSED [ 71%] tests/test_styles_cache.py::test_crop PASSED [ 71%] tests/test_styles_cache.py::test_dirty_cache PASSED [ 71%] tests/test_suggestions.py::test_get_suggestion[background-possible_words0-background] PASSED [ 71%] tests/test_suggestions.py::test_get_suggestion[backgroundu-possible_words1-background] PASSED [ 71%] tests/test_suggestions.py::test_get_suggestion[bkgrund-possible_words2-background] PASSED [ 71%] tests/test_suggestions.py::test_get_suggestion[llow-possible_words3-None] PASSED [ 71%] tests/test_suggestions.py::test_get_suggestion[llow-possible_words4-yellow] PASSED [ 71%] tests/test_suggestions.py::test_get_suggestion[yllow-possible_words5-yellow] PASSED [ 71%] tests/test_suggestions.py::test_get_suggestions[background-possible_words0-1-expected_result0] PASSED [ 71%] tests/test_suggestions.py::test_get_suggestions[backgroundu-possible_words1-1-expected_result1] PASSED [ 71%] tests/test_suggestions.py::test_get_suggestions[bkgrund-possible_words2-1-expected_result2] PASSED [ 71%] tests/test_suggestions.py::test_get_suggestions[llow-possible_words3-1-expected_result3] PASSED [ 71%] tests/test_suggestions.py::test_get_suggestions[llow-possible_words4-1-expected_result4] PASSED [ 71%] tests/test_suggestions.py::test_get_suggestions[yllow-possible_words5-1-expected_result5] PASSED [ 71%] tests/test_suggestions.py::test_get_suggestions[yllow-possible_words6-2-expected_result6] PASSED [ 71%] tests/test_suggestions.py::test_get_suggestions[yllow-possible_words7-2-expected_result7] PASSED [ 71%] tests/test_suspend.py::test_suspend_not_supported PASSED [ 71%] tests/test_suspend.py::test_suspend_supported PASSED [ 71%] tests/test_switch.py::test_switch_click_doesnt_bubble_up PASSED [ 71%] tests/test_tabbed_content.py::test_tabbed_content_switch_via_ui PASSED [ 71%] tests/test_tabbed_content.py::test_tabbed_content_switch_via_code PASSED [ 71%] tests/test_tabbed_content.py::test_unsetting_tabbed_content_active PASSED [ 72%] tests/test_tabbed_content.py::test_tabbed_content_initial PASSED [ 72%] tests/test_tabbed_content.py::test_tabbed_content_messages PASSED [ 72%] tests/test_tabbed_content.py::test_tabbed_content_add_later_from_empty PASSED [ 72%] tests/test_tabbed_content.py::test_tabbed_content_add_later_from_composed PASSED [ 72%] tests/test_tabbed_content.py::test_tabbed_content_add_before_id PASSED [ 72%] tests/test_tabbed_content.py::test_tabbed_content_add_before_pane PASSED [ 72%] tests/test_tabbed_content.py::test_tabbed_content_add_before_badly PASSED [ 72%] tests/test_tabbed_content.py::test_tabbed_content_add_after PASSED [ 72%] tests/test_tabbed_content.py::test_tabbed_content_add_after_pane PASSED [ 72%] tests/test_tabbed_content.py::test_tabbed_content_add_after_badly PASSED [ 72%] tests/test_tabbed_content.py::test_tabbed_content_add_before_and_after PASSED [ 72%] tests/test_tabbed_content.py::test_tabbed_content_removal PASSED [ 72%] tests/test_tabbed_content.py::test_tabbed_content_reversed_removal PASSED [ 72%] tests/test_tabbed_content.py::test_tabbed_content_clear PASSED [ 72%] tests/test_tabbed_content.py::test_disabling_does_not_deactivate_tab PASSED [ 72%] tests/test_tabbed_content.py::test_disabled_tab_cannot_be_clicked PASSED [ 72%] tests/test_tabbed_content.py::test_disabling_via_tabbed_content PASSED [ 72%] tests/test_tabbed_content.py::test_disabling_via_tab_pane PASSED [ 72%] tests/test_tabbed_content.py::test_creating_disabled_tab PASSED [ 72%] tests/test_tabbed_content.py::test_navigation_around_disabled_tabs PASSED [ 72%] tests/test_tabbed_content.py::test_reenabling_tab PASSED [ 72%] tests/test_tabbed_content.py::test_reenabling_via_tabbed_content PASSED [ 72%] tests/test_tabbed_content.py::test_reenabling_via_tab_pane PASSED [ 72%] tests/test_tabbed_content.py::test_disabling_unknown_tab PASSED [ 72%] tests/test_tabbed_content.py::test_enabling_unknown_tab PASSED [ 72%] tests/test_tabbed_content.py::test_hide_unknown_tab PASSED [ 72%] tests/test_tabbed_content.py::test_show_unknown_tab PASSED [ 73%] tests/test_tabbed_content.py::test_hide_show_messages PASSED [ 73%] tests/test_tabbed_content.py::test_hide_last_tab_means_no_tab_active PASSED [ 73%] tests/test_tabbed_content.py::test_hiding_tabs_moves_active_to_next_tab PASSED [ 73%] tests/test_tabbed_content.py::test_showing_tabs_does_not_change_active_tab PASSED [ 73%] tests/test_tabbed_content.py::test_showing_first_tab_activates_tab[tab-1] PASSED [ 73%] tests/test_tabbed_content.py::test_showing_first_tab_activates_tab[tab-2] PASSED [ 73%] tests/test_tabbed_content.py::test_disabling_nested_tabs PASSED [ 73%] tests/test_tabbed_content.py::test_hiding_nested_tabs PASSED [ 73%] tests/test_tabbed_content.py::test_tabs_nested_in_tabbed_content_doesnt_crash PASSED [ 73%] tests/test_tabbed_content.py::test_tabs_nested_doesnt_interfere_with_ancestor_tabbed_content PASSED [ 73%] tests/test_tabbed_content.py::test_disabling_tab_within_tabbed_content_stays_isolated PASSED [ 73%] tests/test_tabs.py::test_tab_label PASSED [ 73%] tests/test_tabs.py::test_tab_relabel PASSED [ 73%] tests/test_tabs.py::test_compose_empty_tabs PASSED [ 73%] tests/test_tabs.py::test_compose_tabs_from_strings PASSED [ 73%] tests/test_tabs.py::test_compose_tabs_from_tabs PASSED [ 73%] tests/test_tabs.py::test_add_tabs_later PASSED [ 73%] tests/test_tabs.py::test_add_tab_before PASSED [ 73%] tests/test_tabs.py::test_add_tab_before_badly PASSED [ 73%] tests/test_tabs.py::test_add_tab_after PASSED [ 73%] tests/test_tabs.py::test_add_tab_after_badly PASSED [ 73%] tests/test_tabs.py::test_add_tab_before_and_after PASSED [ 73%] tests/test_tabs.py::test_remove_tabs PASSED [ 73%] tests/test_tabs.py::test_remove_tabs_reversed PASSED [ 73%] tests/test_tabs.py::test_clear_tabs PASSED [ 73%] tests/test_tabs.py::test_change_active_from_code PASSED [ 74%] tests/test_tabs.py::test_navigate_tabs_with_keyboard PASSED [ 74%] tests/test_tabs.py::test_navigate_empty_tabs_with_keyboard PASSED [ 74%] tests/test_tabs.py::test_navigate_tabs_with_mouse PASSED [ 74%] tests/test_tabs.py::test_startup_messages PASSED [ 74%] tests/test_tabs.py::test_change_tab_with_code_messages PASSED [ 74%] tests/test_tabs.py::test_remove_tabs_messages PASSED [ 74%] tests/test_tabs.py::test_reverse_remove_tabs_messages PASSED [ 74%] tests/test_tabs.py::test_keyboard_navigation_messages PASSED [ 74%] tests/test_tabs.py::test_mouse_navigation_messages PASSED [ 74%] tests/test_tabs.py::test_disabled_tab_is_not_activated_by_clicking_underline PASSED [ 74%] tests/test_test_runner.py::test_run_test PASSED [ 74%] tests/test_textlog.py::test_make_renderable_expand_tabs PASSED [ 74%] tests/test_tooltips.py::test_no_tip_gets_no_tooltip PASSED [ 74%] tests/test_tooltips.py::test_tip_gets_a_tooltip PASSED [ 74%] tests/test_tooltips.py::test_mouse_move_removes_a_tooltip PASSED [ 74%] tests/test_tooltips.py::test_removing_tipper_should_remove_tooltip PASSED [ 74%] tests/test_tooltips.py::test_making_tipper_invisible_should_remove_tooltip PASSED [ 74%] tests/test_tooltips.py::test_making_tipper_not_displayed_should_remove_tooltip PASSED [ 74%] tests/test_tooltips.py::test_making_tipper_shuffle_away_should_remove_tooltip PASSED [ 74%] tests/test_two_way_dict.py::test_get PASSED [ 74%] tests/test_two_way_dict.py::test_get_key PASSED [ 74%] tests/test_two_way_dict.py::test_set_item PASSED [ 74%] tests/test_two_way_dict.py::test_len PASSED [ 74%] tests/test_two_way_dict.py::test_delitem PASSED [ 74%] tests/test_two_way_dict.py::test_contains PASSED [ 74%] tests/test_unmount.py::test_unmount PASSED [ 74%] tests/test_validation.py::test_ValidationResult_merge_successes PASSED [ 75%] tests/test_validation.py::test_ValidationResult_merge_failures PASSED [ 75%] tests/test_validation.py::test_ValidationResult_failure_descriptions PASSED [ 75%] tests/test_validation.py::test_Failure_description_priorities_parameter_only PASSED [ 75%] tests/test_validation.py::test_Failure_description_priorities_parameter_and_describe_failure PASSED [ 75%] tests/test_validation.py::test_Failure_description_priorities_describe_failure_only PASSED [ 75%] tests/test_validation.py::test_Failure_description_parameter_and_description_inside_validate PASSED [ 75%] tests/test_validation.py::test_Failure_description_describe_and_description_inside_validate PASSED [ 75%] tests/test_validation.py::test_Number_validate[123-None-None-True] PASSED [ 75%] tests/test_validation.py::test_Number_validate[-123-None-None-True] PASSED [ 75%] tests/test_validation.py::test_Number_validate[123.45-None-None-True] PASSED [ 75%] tests/test_validation.py::test_Number_validate[1.23e-4-None-None-True] PASSED [ 75%] tests/test_validation.py::test_Number_validate[abc-None-None-False] PASSED [ 75%] tests/test_validation.py::test_Number_validate[123-100-200-True] PASSED [ 75%] tests/test_validation.py::test_Number_validate[99-100-200-False] PASSED [ 75%] tests/test_validation.py::test_Number_validate[201-100-200-False] PASSED [ 75%] tests/test_validation.py::test_Number_validate[1.23e4-0-50000-True] PASSED [ 75%] tests/test_validation.py::test_Number_validate[inf-None-None-False] PASSED [ 75%] tests/test_validation.py::test_Number_validate[nan-None-None-False] PASSED [ 75%] tests/test_validation.py::test_Number_validate[-inf-None-None-False] PASSED [ 75%] tests/test_validation.py::test_Number_validate[-4-0-5-False] PASSED [ 75%] tests/test_validation.py::test_Number_validate[2--3-0-False] PASSED [ 75%] tests/test_validation.py::test_Number_validate[-2--3-0-True] PASSED [ 75%] tests/test_validation.py::test_Regex_validate[\\d+-123-True] PASSED [ 75%] tests/test_validation.py::test_Regex_validate[\\d+-abc-False] PASSED [ 75%] tests/test_validation.py::test_Regex_validate[[a-z]+-abc-True] PASSED [ 75%] tests/test_validation.py::test_Regex_validate[[a-z]+-ABC-False] PASSED [ 75%] tests/test_validation.py::test_Regex_validate[\\w+-abc123-True] PASSED [ 76%] tests/test_validation.py::test_Regex_validate[\\w+-!@#-False] PASSED [ 76%] tests/test_validation.py::test_Integer_validate[123-None-None-True] PASSED [ 76%] tests/test_validation.py::test_Integer_validate[-123-None-None-True] PASSED [ 76%] tests/test_validation.py::test_Integer_validate[123.45-None-None-False] PASSED [ 76%] tests/test_validation.py::test_Integer_validate[1.23e-4-None-None-False] PASSED [ 76%] tests/test_validation.py::test_Integer_validate[abc-None-None-False] PASSED [ 76%] tests/test_validation.py::test_Integer_validate[123-100-200-True] PASSED [ 76%] tests/test_validation.py::test_Integer_validate[99-100-200-False] PASSED [ 76%] tests/test_validation.py::test_Integer_validate[201-100-200-False] PASSED [ 76%] tests/test_validation.py::test_Integer_validate[1.23e4-None-None-False] PASSED [ 76%] tests/test_validation.py::test_Integer_validate[123.-None-None-False] PASSED [ 76%] tests/test_validation.py::test_Integer_validate[123_456-None-None-True] PASSED [ 76%] tests/test_validation.py::test_Integer_validate[_123_456-None-None-False] PASSED [ 76%] tests/test_validation.py::test_Integer_validate[-123--123--123-True] PASSED [ 76%] tests/test_validation.py::test_Length_validate[-None-None-True] PASSED [ 76%] tests/test_validation.py::test_Length_validate[test-None-None-True] PASSED [ 76%] tests/test_validation.py::test_Length_validate[test-5-None-False] PASSED [ 76%] tests/test_validation.py::test_Length_validate[test-None-3-False] PASSED [ 76%] tests/test_validation.py::test_Length_validate[test-4-4-True] PASSED [ 76%] tests/test_validation.py::test_Length_validate[test-2-6-True] PASSED [ 76%] tests/test_validation.py::test_URL_validate[http://example.com-True] PASSED [ 76%] tests/test_validation.py::test_URL_validate[https://example.com-True] PASSED [ 76%] tests/test_validation.py::test_URL_validate[www.example.com-False] PASSED [ 76%] tests/test_validation.py::test_URL_validate[://example.com-False] PASSED [ 76%] tests/test_validation.py::test_URL_validate[https:///path-False] PASSED [ 76%] tests/test_validation.py::test_URL_validate[redis://username:pass[word@localhost:6379/0-False] PASSED [ 77%] tests/test_validation.py::test_URL_validate[-False] PASSED [ 77%] tests/test_validation.py::test_Function_validate[-None-True] PASSED [ 77%] tests/test_validation.py::test_Function_validate[-failure!-False] PASSED [ 77%] tests/test_validation.py::test_Integer_failure_description_when_NotANumber PASSED [ 77%] tests/test_version.py::test_version PASSED [ 77%] tests/test_visible.py::test_visibility_changes PASSED [ 77%] tests/test_visible.py::test_visible_is_inherited PASSED [ 77%] tests/test_widget.py::test_widget_construct PASSED [ 77%] tests/test_widget.py::test_widget_set_visible_true[True-True-visible] PASSED [ 77%] tests/test_widget.py::test_widget_set_visible_true[False-False-hidden] PASSED [ 77%] tests/test_widget.py::test_widget_set_visible_true[hidden-False-hidden] PASSED [ 77%] tests/test_widget.py::test_widget_set_visible_true[visible-True-visible] PASSED [ 77%] tests/test_widget.py::test_widget_set_visible_invalid_string PASSED [ 77%] tests/test_widget.py::test_widget_content_width PASSED [ 77%] tests/test_widget.py::test_get_child_by_id_gets_first_child PASSED [ 77%] tests/test_widget.py::test_get_child_by_id_no_matching_child PASSED [ 77%] tests/test_widget.py::test_get_child_by_id_only_immediate_descendents PASSED [ 77%] tests/test_widget.py::test_get_child_by_type PASSED [ 77%] tests/test_widget.py::test_get_widget_by_id_no_matching_child PASSED [ 77%] tests/test_widget.py::test_get_widget_by_id_non_immediate_descendants PASSED [ 77%] tests/test_widget.py::test_get_widget_by_id_immediate_descendants PASSED [ 77%] tests/test_widget.py::test_get_widget_by_id_doesnt_return_self PASSED [ 77%] tests/test_widget.py::test_get_widgets_app_delegated PASSED [ 77%] tests/test_widget.py::test_widget_mount_ids_must_be_unique_mounting_all_in_one_go PASSED [ 77%] tests/test_widget.py::test_widget_mount_ids_must_be_unique_mounting_multiple_calls PASSED [ 77%] tests/test_widget.py::test_get_pseudo_class_state PASSED [ 77%] tests/test_widget.py::test_get_pseudo_class_state_disabled PASSED [ 78%] tests/test_widget.py::test_get_pseudo_class_state_parent_disabled PASSED [ 78%] tests/test_widget.py::test_get_pseudo_class_state_hover PASSED [ 78%] tests/test_widget.py::test_get_pseudo_class_state_focus PASSED [ 78%] tests/test_widget.py::test_remove PASSED [ 78%] tests/test_widget.py::test_remove_unmounted PASSED [ 78%] tests/test_widget.py::test_render_str PASSED [ 78%] tests/test_widget.py::test_compose_order PASSED [ 78%] tests/test_widget.py::test_children_must_be_widgets PASSED [ 78%] tests/test_widget.py::test_orphan_widget_has_no_siblings PASSED [ 78%] tests/test_widget.py::test__allow_scroll_default PASSED [ 78%] tests/test_widget.py::test__allow_scroll PASSED [ 78%] tests/test_widget.py::test_offset_getter_setter PASSED [ 78%] tests/test_widget.py::test_get_set_tooltip PASSED [ 78%] tests/test_widget.py::test_loading PASSED [ 78%] tests/test_widget.py::test_is_mounted_property PASSED [ 78%] tests/test_widget.py::test_mount_error_not_widget PASSED [ 78%] tests/test_widget.py::test_mount_error_bad_widget PASSED [ 78%] tests/test_widget.py::test_render_returns_text PASSED [ 78%] tests/test_widget.py::test_sort_children PASSED [ 78%] tests/test_widget.py::test_sort_children_no_key PASSED [ 78%] tests/test_widget.py::test_bad_widget_name_raised PASSED [ 78%] tests/test_widget.py::test_lazy_loading PASSED [ 78%] tests/test_widget.py::test_of_type PASSED [ 78%] tests/test_widget_child_moving.py::test_move_child_no_direction PASSED [ 78%] tests/test_widget_child_moving.py::test_move_child_both_directions PASSED [ 78%] tests/test_widget_child_moving.py::test_move_child_not_our_child PASSED [ 78%] tests/test_widget_child_moving.py::test_move_child_to_outside PASSED [ 79%] tests/test_widget_child_moving.py::test_move_child_index_in_relation_to_itself_index[before] PASSED [ 79%] tests/test_widget_child_moving.py::test_move_child_index_in_relation_to_itself_index[after] PASSED [ 79%] tests/test_widget_child_moving.py::test_move_child_index_in_relation_to_itself_widget[before] PASSED [ 79%] tests/test_widget_child_moving.py::test_move_child_index_in_relation_to_itself_widget[after] PASSED [ 79%] tests/test_widget_child_moving.py::test_move_child_widget_in_relation_to_itself_index[before] PASSED [ 79%] tests/test_widget_child_moving.py::test_move_child_widget_in_relation_to_itself_index[after] PASSED [ 79%] tests/test_widget_child_moving.py::test_move_child_widget_in_relation_to_itself_widget[before] PASSED [ 79%] tests/test_widget_child_moving.py::test_move_child_widget_in_relation_to_itself_widget[after] PASSED [ 79%] tests/test_widget_child_moving.py::test_move_past_end_of_child_list PASSED [ 79%] tests/test_widget_child_moving.py::test_move_before_end_of_child_list PASSED [ 79%] tests/test_widget_child_moving.py::test_move_before_permutations PASSED [ 79%] tests/test_widget_child_moving.py::test_move_after_permutations PASSED [ 79%] tests/test_widget_child_moving.py::test_move_child_after_last_child PASSED [ 79%] tests/test_widget_child_moving.py::test_move_child_after_last_numeric_location PASSED [ 79%] tests/test_widget_mount_point.py::test_find_dom_spot PASSED [ 79%] tests/test_widget_mounting.py::test_mount_via_app PASSED [ 79%] tests/test_widget_mounting.py::test_mount_error PASSED [ 79%] tests/test_widget_navigation.py::test_distance[2-8-1-10-4] PASSED [ 79%] tests/test_widget_navigation.py::test_distance[2-8--1-10-6] PASSED [ 79%] tests/test_widget_navigation.py::test_distance[8-2--1-10-4] PASSED [ 79%] tests/test_widget_navigation.py::test_distance[8-2-1-10-6] PASSED [ 79%] tests/test_widget_navigation.py::test_distance[8-2-1-1234123512-6] PASSED [ 79%] tests/test_widget_navigation.py::test_distance[2-8-1-11-5] PASSED [ 79%] tests/test_widget_navigation.py::test_distance[2-8-1-12-6] PASSED [ 79%] tests/test_widget_navigation.py::test_distance[5-5-1-10-0] PASSED [ 79%] tests/test_widget_navigation.py::test_find_enabled_returns_none_on_empty[find_first_enabled] PASSED [ 79%] tests/test_widget_navigation.py::test_find_enabled_returns_none_on_empty[find_last_enabled] PASSED [ 80%] tests/test_widget_navigation.py::test_find_next_enabled[candidates0-None-1-None] PASSED [ 80%] tests/test_widget_navigation.py::test_find_next_enabled[candidates1-None--1-None] PASSED [ 80%] tests/test_widget_navigation.py::test_find_next_enabled[candidates2-None-1-0] PASSED [ 80%] tests/test_widget_navigation.py::test_find_next_enabled[candidates3-None-1-0] PASSED [ 80%] tests/test_widget_navigation.py::test_find_next_enabled[candidates4-None-1-0] PASSED [ 80%] tests/test_widget_navigation.py::test_find_next_enabled[candidates5-None-1-1] PASSED [ 80%] tests/test_widget_navigation.py::test_find_next_enabled[candidates6-None-1-2] PASSED [ 80%] tests/test_widget_navigation.py::test_find_next_enabled[candidates7-None--1-0] PASSED [ 80%] tests/test_widget_navigation.py::test_find_next_enabled[candidates8-None--1-1] PASSED [ 80%] tests/test_widget_navigation.py::test_find_next_enabled[candidates9-None--1-0] PASSED [ 80%] tests/test_widget_navigation.py::test_find_next_enabled[candidates10-None--1-0] PASSED [ 80%] tests/test_widget_navigation.py::test_find_next_enabled[candidates11-0-1-0] PASSED [ 80%] tests/test_widget_navigation.py::test_find_next_enabled[candidates12-1-1-1] PASSED [ 80%] tests/test_widget_navigation.py::test_find_next_enabled[candidates13-1--1-1] PASSED [ 80%] tests/test_widget_navigation.py::test_find_next_enabled[candidates14-None--1-None] PASSED [ 80%] tests/test_widget_navigation.py::test_find_next_enabled[candidates15-0-1-3] PASSED [ 80%] tests/test_widget_navigation.py::test_find_next_enabled[candidates16-0--1-4] PASSED [ 80%] tests/test_widget_navigation.py::test_find_next_enabled[candidates17-1-1-3] PASSED [ 80%] tests/test_widget_navigation.py::test_find_next_enabled[candidates18-1--1-0] PASSED [ 80%] tests/test_widget_navigation.py::test_find_next_enabled[candidates19-2-1-3] PASSED [ 80%] tests/test_widget_navigation.py::test_find_next_enabled[candidates20-2--1-0] PASSED [ 80%] tests/test_widget_navigation.py::test_find_next_enabled[candidates21-3-1-4] PASSED [ 80%] tests/test_widget_navigation.py::test_find_next_enabled[candidates22-3--1-0] PASSED [ 80%] tests/test_widget_navigation.py::test_find_next_enabled[candidates23-4-1-0] PASSED [ 80%] tests/test_widget_navigation.py::test_find_next_enabled[candidates24-4--1-3] PASSED [ 80%] tests/test_widget_navigation.py::test_find_next_enabled[candidates25-5-1-0] PASSED [ 81%] tests/test_widget_navigation.py::test_find_next_enabled[candidates26-5--1-4] PASSED [ 81%] tests/test_widget_navigation.py::test_find_next_enabled_no_wrap[candidates0-None-1-None] PASSED [ 81%] tests/test_widget_navigation.py::test_find_next_enabled_no_wrap[candidates1-None--1-None] PASSED [ 81%] tests/test_widget_navigation.py::test_find_next_enabled_no_wrap[candidates2-None-1-0] PASSED [ 81%] tests/test_widget_navigation.py::test_find_next_enabled_no_wrap[candidates3-None-1-0] PASSED [ 81%] tests/test_widget_navigation.py::test_find_next_enabled_no_wrap[candidates4-None-1-0] PASSED [ 81%] tests/test_widget_navigation.py::test_find_next_enabled_no_wrap[candidates5-None-1-1] PASSED [ 81%] tests/test_widget_navigation.py::test_find_next_enabled_no_wrap[candidates6-None-1-2] PASSED [ 81%] tests/test_widget_navigation.py::test_find_next_enabled_no_wrap[candidates7-None--1-0] PASSED [ 81%] tests/test_widget_navigation.py::test_find_next_enabled_no_wrap[candidates8-None--1-1] PASSED [ 81%] tests/test_widget_navigation.py::test_find_next_enabled_no_wrap[candidates9-None--1-0] PASSED [ 81%] tests/test_widget_navigation.py::test_find_next_enabled_no_wrap[candidates10-None--1-0] PASSED [ 81%] tests/test_widget_navigation.py::test_find_next_enabled_no_wrap[candidates11-0-1-None] PASSED [ 81%] tests/test_widget_navigation.py::test_find_next_enabled_no_wrap[candidates12-1-1-None] PASSED [ 81%] tests/test_widget_navigation.py::test_find_next_enabled_no_wrap[candidates13-1--1-None] PASSED [ 81%] tests/test_widget_navigation.py::test_find_next_enabled_no_wrap[candidates14-None--1-None] PASSED [ 81%] tests/test_widget_navigation.py::test_find_next_enabled_no_wrap[candidates15-0-1-3] PASSED [ 81%] tests/test_widget_navigation.py::test_find_next_enabled_no_wrap[candidates16-0--1-None] PASSED [ 81%] tests/test_widget_navigation.py::test_find_next_enabled_no_wrap[candidates17-1-1-3] PASSED [ 81%] tests/test_widget_navigation.py::test_find_next_enabled_no_wrap[candidates18-1--1-0] PASSED [ 81%] tests/test_widget_navigation.py::test_find_next_enabled_no_wrap[candidates19-2-1-3] PASSED [ 81%] tests/test_widget_navigation.py::test_find_next_enabled_no_wrap[candidates20-2--1-0] PASSED [ 81%] tests/test_widget_navigation.py::test_find_next_enabled_no_wrap[candidates21-3-1-4] PASSED [ 81%] tests/test_widget_navigation.py::test_find_next_enabled_no_wrap[candidates22-3--1-0] PASSED [ 81%] tests/test_widget_navigation.py::test_find_next_enabled_no_wrap[candidates23-4-1-None] PASSED [ 81%] tests/test_widget_navigation.py::test_find_next_enabled_no_wrap[candidates24-4--1-3] PASSED [ 81%] tests/test_widget_navigation.py::test_find_next_enabled_no_wrap[candidates25-5-1-None] PASSED [ 82%] tests/test_widget_navigation.py::test_find_next_enabled_no_wrap[candidates26-5--1-4] PASSED [ 82%] tests/test_widget_navigation.py::test_find_next_with_anchor[find_next_enabled_no_wrap-0-1] PASSED [ 82%] tests/test_widget_navigation.py::test_find_next_with_anchor[find_next_enabled_no_wrap-0--1] PASSED [ 82%] tests/test_widget_navigation.py::test_find_next_with_anchor[find_next_enabled_no_wrap-1-1] PASSED [ 82%] tests/test_widget_navigation.py::test_find_next_with_anchor[find_next_enabled_no_wrap-1--1] PASSED [ 82%] tests/test_widget_navigation.py::test_find_next_with_anchor[find_next_enabled_no_wrap-2-1] PASSED [ 82%] tests/test_widget_navigation.py::test_find_next_with_anchor[find_next_enabled_no_wrap-2--1] PASSED [ 82%] tests/test_widget_removing.py::test_remove_single_widget PASSED [ 82%] tests/test_widget_removing.py::test_many_remove_all_widgets PASSED [ 82%] tests/test_widget_removing.py::test_many_remove_some_widgets PASSED [ 82%] tests/test_widget_removing.py::test_remove_branch PASSED [ 82%] tests/test_widget_removing.py::test_remove_overlap PASSED [ 82%] tests/test_widget_removing.py::test_remove_move_focus PASSED [ 82%] tests/test_widget_removing.py::test_widget_remove_order PASSED [ 82%] tests/test_widget_removing.py::test_query_remove_order PASSED [ 82%] tests/test_widget_removing.py::test_widget_remove_children_container PASSED [ 82%] tests/test_widget_removing.py::test_widget_remove_children_with_star_selector PASSED [ 82%] tests/test_widget_removing.py::test_widget_remove_children_with_string_selector PASSED [ 82%] tests/test_widget_removing.py::test_widget_remove_children_with_type_selector PASSED [ 82%] tests/test_widget_removing.py::test_widget_remove_children_with_selector_does_not_leak PASSED [ 82%] tests/test_widget_removing.py::test_widget_remove_children_no_children PASSED [ 82%] tests/test_widget_removing.py::test_widget_remove_children_no_children_match_selector PASSED [ 82%] tests/test_widget_visibility.py::test_hide PASSED [ 82%] tests/test_win_sleep.py::test_win_sleep_timer_is_cancellable SKIPPED (We only need to test this on Windows.) [ 82%] tests/test_wrap.py::test_chunks[-expected_output0] PASSED [ 82%] tests/test_wrap.py::test_chunks[ -expected_output1] PASSED [ 82%] tests/test_wrap.py::test_chunks[\t-expected_output2] PASSED [ 83%] tests/test_wrap.py::test_chunks[foo-expected_output3] PASSED [ 83%] tests/test_wrap.py::test_chunks[ foo -expected_output4] PASSED [ 83%] tests/test_wrap.py::test_chunks[foo bar-expected_output5] PASSED [ 83%] tests/test_wrap.py::test_chunks[\tfoo bar-expected_output6] PASSED [ 83%] tests/test_wrap.py::test_chunks[ foo bar-expected_output7] PASSED [ 83%] tests/test_wrap.py::test_chunks[foo bar -expected_output8] PASSED [ 83%] tests/test_wrap.py::test_chunks[foo\t bar -expected_output9] PASSED [ 83%] tests/test_wrap.py::test_chunks[\u6728\t \u5ddd -expected_output10] PASSED [ 83%] tests/test_wrap.py::test_compute_wrap_offsets[-6-4-expected_output0] PASSED [ 83%] tests/test_wrap.py::test_compute_wrap_offsets[\t-6-4-expected_output1] PASSED [ 83%] tests/test_wrap.py::test_compute_wrap_offsets[ -6-4-expected_output2] PASSED [ 83%] tests/test_wrap.py::test_compute_wrap_offsets[foo bar baz-6-4-expected_output3] PASSED [ 83%] tests/test_wrap.py::test_compute_wrap_offsets[\tfoo bar baz-6-4-expected_output4] PASSED [ 83%] tests/test_wrap.py::test_compute_wrap_offsets[\tfo bar baz-6-4-expected_output5] PASSED [ 83%] tests/test_wrap.py::test_compute_wrap_offsets[\tfo bar baz-6-8-expected_output6] PASSED [ 83%] tests/test_wrap.py::test_compute_wrap_offsets[\tfo bar baz\t-6-8-expected_output7] PASSED [ 83%] tests/test_wrap.py::test_compute_wrap_offsets[\t\t\tfo bar baz\t-20-4-expected_output8] PASSED [ 83%] tests/test_wrap.py::test_compute_wrap_offsets[\t\t\t\t\t\t\t\tfo bar bar-19-4-expected_output9] PASSED [ 83%] tests/test_wrap.py::test_compute_wrap_offsets[\t\t\t\t\t-19-4-expected_output10] PASSED [ 83%] tests/test_xterm_parser.py::test_varying_parser_chunk_sizes_no_missing_data[2] PASSED [ 83%] tests/test_xterm_parser.py::test_varying_parser_chunk_sizes_no_missing_data[3] PASSED [ 83%] tests/test_xterm_parser.py::test_varying_parser_chunk_sizes_no_missing_data[4] PASSED [ 83%] tests/test_xterm_parser.py::test_varying_parser_chunk_sizes_no_missing_data[5] PASSED [ 83%] tests/test_xterm_parser.py::test_varying_parser_chunk_sizes_no_missing_data[6] PASSED [ 83%] tests/test_xterm_parser.py::test_bracketed_paste PASSED [ 83%] tests/test_xterm_parser.py::test_bracketed_paste_content_contains_escape_codes PASSED [ 83%] tests/test_xterm_parser.py::test_bracketed_paste_amongst_other_codes PASSED [ 84%] tests/test_xterm_parser.py::test_cant_match_escape_sequence_too_long PASSED [ 84%] tests/test_xterm_parser.py::test_unknown_sequence_followed_by_known_sequence[2] PASSED [ 84%] tests/test_xterm_parser.py::test_unknown_sequence_followed_by_known_sequence[3] PASSED [ 84%] tests/test_xterm_parser.py::test_unknown_sequence_followed_by_known_sequence[4] PASSED [ 84%] tests/test_xterm_parser.py::test_unknown_sequence_followed_by_known_sequence[5] PASSED [ 84%] tests/test_xterm_parser.py::test_unknown_sequence_followed_by_known_sequence[6] PASSED [ 84%] tests/test_xterm_parser.py::test_simple_key_presses_all_delivered_correct_order PASSED [ 84%] tests/test_xterm_parser.py::test_simple_keypress_non_character_key PASSED [ 84%] tests/test_xterm_parser.py::test_key_presses_and_escape_sequence_mixed PASSED [ 84%] tests/test_xterm_parser.py::test_single_escape PASSED [ 84%] tests/test_xterm_parser.py::test_double_escape PASSED [ 84%] tests/test_xterm_parser.py::test_mouse_click[\x1b[<0;50;25M-MouseDown-False-False] PASSED [ 84%] tests/test_xterm_parser.py::test_mouse_click[\x1b[<4;50;25M-MouseDown-True-False] PASSED [ 84%] tests/test_xterm_parser.py::test_mouse_click[\x1b[<8;50;25M-MouseDown-False-True] PASSED [ 84%] tests/test_xterm_parser.py::test_mouse_click[\x1b[<12;50;25M-MouseDown-True-True] PASSED [ 84%] tests/test_xterm_parser.py::test_mouse_click[\x1b[<0;50;25m-MouseUp-False-False] PASSED [ 84%] tests/test_xterm_parser.py::test_mouse_click[\x1b[<4;50;25m-MouseUp-True-False] PASSED [ 84%] tests/test_xterm_parser.py::test_mouse_click[\x1b[<8;50;25m-MouseUp-False-True] PASSED [ 84%] tests/test_xterm_parser.py::test_mouse_click[\x1b[<12;50;25m-MouseUp-True-True] PASSED [ 84%] tests/test_xterm_parser.py::test_mouse_move[\x1b[<32;15;38M-False-False-1] PASSED [ 84%] tests/test_xterm_parser.py::test_mouse_move[\x1b[<35;15;38M-False-False-0] PASSED [ 84%] tests/test_xterm_parser.py::test_mouse_move[\x1b[<39;15;38M-True-False-0] PASSED [ 84%] tests/test_xterm_parser.py::test_mouse_move[\x1b[<43;15;38M-False-True-0] PASSED [ 84%] tests/test_xterm_parser.py::test_mouse_move[\x1b[<3;15;38M-False-False-0] PASSED [ 84%] tests/test_xterm_parser.py::test_mouse_scroll_up[\x1b[<64;18;25M-False-False] PASSED [ 84%] tests/test_xterm_parser.py::test_mouse_scroll_up[\x1b[<68;18;25M-True-False] PASSED [ 85%] tests/test_xterm_parser.py::test_mouse_scroll_up[\x1b[<72;18;25M-False-True] PASSED [ 85%] tests/test_xterm_parser.py::test_mouse_scroll_down[\x1b[<65;18;25M-False-False] PASSED [ 85%] tests/test_xterm_parser.py::test_mouse_scroll_down[\x1b[<69;18;25M-True-False] PASSED [ 85%] tests/test_xterm_parser.py::test_mouse_scroll_down[\x1b[<73;18;25M-False-True] PASSED [ 85%] tests/test_xterm_parser.py::test_mouse_event_detected_but_info_not_parsed PASSED [ 85%] tests/test_xterm_parser.py::test_escape_sequence_resulting_in_multiple_keypresses XFAIL [ 85%] tests/test_xterm_parser.py::test_terminal_mode_reporting_synchronized_output_supported PASSED [ 85%] tests/test_xterm_parser.py::test_terminal_mode_reporting_synchronized_output_not_supported PASSED [ 85%] tests/text_area/test_code_editor.py::test_code_editor_parameters_kept_up_to_date PASSED [ 85%] tests/text_area/test_edit_via_api.py::test_insert_text_start_maintain_selection_offset PASSED [ 85%] tests/text_area/test_edit_via_api.py::test_insert_text_start PASSED [ 85%] tests/text_area/test_edit_via_api.py::test_insert_empty_string PASSED [ 85%] tests/text_area/test_edit_via_api.py::test_replace_empty_string PASSED [ 85%] tests/text_area/test_edit_via_api.py::test_insert_character_near_cursor_maintain_selection_offset[cursor_location0-insert_location0-cursor_destination0] PASSED [ 85%] tests/text_area/test_edit_via_api.py::test_insert_character_near_cursor_maintain_selection_offset[cursor_location1-insert_location1-cursor_destination1] PASSED [ 85%] tests/text_area/test_edit_via_api.py::test_insert_character_near_cursor_maintain_selection_offset[cursor_location2-insert_location2-cursor_destination2] PASSED [ 85%] tests/text_area/test_edit_via_api.py::test_insert_character_near_cursor_maintain_selection_offset[cursor_location3-insert_location3-cursor_destination3] PASSED [ 85%] tests/text_area/test_edit_via_api.py::test_insert_newline_around_cursor_maintain_selection_offset[cursor_location0-insert_location0-cursor_destination0] PASSED [ 85%] tests/text_area/test_edit_via_api.py::test_insert_newline_around_cursor_maintain_selection_offset[cursor_location1-insert_location1-cursor_destination1] PASSED [ 85%] tests/text_area/test_edit_via_api.py::test_insert_newline_around_cursor_maintain_selection_offset[cursor_location2-insert_location2-cursor_destination2] PASSED [ 85%] tests/text_area/test_edit_via_api.py::test_insert_newlines_start PASSED [ 85%] tests/text_area/test_edit_via_api.py::test_insert_newlines_end PASSED [ 85%] tests/text_area/test_edit_via_api.py::test_insert_windows_newlines PASSED [ 85%] tests/text_area/test_edit_via_api.py::test_insert_old_mac_newlines PASSED [ 85%] tests/text_area/test_edit_via_api.py::test_insert_text_non_cursor_location PASSED [ 85%] tests/text_area/test_edit_via_api.py::test_insert_text_non_cursor_location_dont_maintain_offset PASSED [ 85%] tests/text_area/test_edit_via_api.py::test_insert_multiline_text PASSED [ 86%] tests/text_area/test_edit_via_api.py::test_insert_multiline_text_maintain_offset PASSED [ 86%] tests/text_area/test_edit_via_api.py::test_replace_multiline_text PASSED [ 86%] tests/text_area/test_edit_via_api.py::test_replace_multiline_text_maintain_selection PASSED [ 86%] tests/text_area/test_edit_via_api.py::test_delete_within_line PASSED [ 86%] tests/text_area/test_edit_via_api.py::test_delete_within_line_dont_maintain_offset PASSED [ 86%] tests/text_area/test_edit_via_api.py::test_delete_multiple_lines_selection_above PASSED [ 86%] tests/text_area/test_edit_via_api.py::test_delete_empty_document PASSED [ 86%] tests/text_area/test_edit_via_api.py::test_clear PASSED [ 86%] tests/text_area/test_edit_via_api.py::test_clear_empty_document PASSED [ 86%] tests/text_area/test_edit_via_api.py::test_insert_text_multiline_selection_top[select_from0-select_to0] PASSED [ 86%] tests/text_area/test_edit_via_api.py::test_insert_text_multiline_selection_top[select_from1-select_to1] PASSED [ 86%] tests/text_area/test_edit_via_api.py::test_insert_text_multiline_selection_bottom[select_from0-select_to0] PASSED [ 86%] tests/text_area/test_edit_via_api.py::test_insert_text_multiline_selection_bottom[select_from1-select_to1] PASSED [ 86%] tests/text_area/test_edit_via_api.py::test_delete_fully_within_selection PASSED [ 86%] tests/text_area/test_edit_via_api.py::test_replace_fully_within_selection PASSED [ 86%] tests/text_area/test_edit_via_api.py::test_text_setter PASSED [ 86%] tests/text_area/test_edit_via_api.py::test_edits_on_read_only_mode PASSED [ 86%] tests/text_area/test_edit_via_bindings.py::test_single_keypress_printable_character PASSED [ 86%] tests/text_area/test_edit_via_bindings.py::test_single_keypress_enter PASSED [ 86%] tests/text_area/test_edit_via_bindings.py::test_tab_with_spaces_goes_to_tab_stop[-0-4] PASSED [ 86%] tests/text_area/test_edit_via_bindings.py::test_tab_with_spaces_goes_to_tab_stop[x-0-4] PASSED [ 86%] tests/text_area/test_edit_via_bindings.py::test_tab_with_spaces_goes_to_tab_stop[x-1-4] PASSED [ 86%] tests/text_area/test_edit_via_bindings.py::test_tab_with_spaces_goes_to_tab_stop[xxx-3-4] PASSED [ 86%] tests/text_area/test_edit_via_bindings.py::test_tab_with_spaces_goes_to_tab_stop[xxxx-4-8] PASSED [ 86%] tests/text_area/test_edit_via_bindings.py::test_tab_with_spaces_goes_to_tab_stop[xxxxx-5-8] PASSED [ 86%] tests/text_area/test_edit_via_bindings.py::test_tab_with_spaces_goes_to_tab_stop[xxxxxx-6-8] PASSED [ 86%] tests/text_area/test_edit_via_bindings.py::test_tab_with_spaces_goes_to_tab_stop[\U0001f4a9-1-3] PASSED [ 87%] tests/text_area/test_edit_via_bindings.py::test_tab_with_spaces_goes_to_tab_stop[\U0001f4a9\U0001f4a9-2-6] PASSED [ 87%] tests/text_area/test_edit_via_bindings.py::test_delete_left PASSED [ 87%] tests/text_area/test_edit_via_bindings.py::test_delete_left_start PASSED [ 87%] tests/text_area/test_edit_via_bindings.py::test_delete_left_end PASSED [ 87%] tests/text_area/test_edit_via_bindings.py::test_deletion_with_non_empty_selection[delete-selection0] PASSED [ 87%] tests/text_area/test_edit_via_bindings.py::test_deletion_with_non_empty_selection[delete-selection1] PASSED [ 87%] tests/text_area/test_edit_via_bindings.py::test_deletion_with_non_empty_selection[backspace-selection2] PASSED [ 87%] tests/text_area/test_edit_via_bindings.py::test_deletion_with_non_empty_selection[backspace-selection3] PASSED [ 87%] tests/text_area/test_edit_via_bindings.py::test_delete_right PASSED [ 87%] tests/text_area/test_edit_via_bindings.py::test_delete_right_end_of_line PASSED [ 87%] tests/text_area/test_edit_via_bindings.py::test_delete_line[selection0-] PASSED [ 87%] tests/text_area/test_edit_via_bindings.py::test_delete_line[selection1-] PASSED [ 87%] tests/text_area/test_edit_via_bindings.py::test_delete_line[selection2-] PASSED [ 87%] tests/text_area/test_edit_via_bindings.py::test_delete_line[selection3-] PASSED [ 87%] tests/text_area/test_edit_via_bindings.py::test_delete_line[selection4-] PASSED [ 87%] tests/text_area/test_edit_via_bindings.py::test_delete_line_multiline_document[selection0-345\n678\n9\n] PASSED [ 87%] tests/text_area/test_edit_via_bindings.py::test_delete_line_multiline_document[selection1-345\n678\n9\n] PASSED [ 87%] tests/text_area/test_edit_via_bindings.py::test_delete_line_multiline_document[selection2-012\n345\n678\n] PASSED [ 87%] tests/text_area/test_edit_via_bindings.py::test_delete_line_multiline_document[selection3-012\n345\n678\n9\n] PASSED [ 87%] tests/text_area/test_edit_via_bindings.py::test_delete_line_multiline_document[selection4-012\n678\n9\n] PASSED [ 87%] tests/text_area/test_edit_via_bindings.py::test_delete_line_multiline_document[selection5-012\n9\n] PASSED [ 87%] tests/text_area/test_edit_via_bindings.py::test_delete_line_multiline_document[selection6-012\n9\n] PASSED [ 87%] tests/text_area/test_edit_via_bindings.py::test_delete_line_multiline_document[selection7-012\n9\n] PASSED [ 87%] tests/text_area/test_edit_via_bindings.py::test_delete_line_multiline_document[selection8-] PASSED [ 87%] tests/text_area/test_edit_via_bindings.py::test_delete_to_end_of_line[selection0-] PASSED [ 87%] tests/text_area/test_edit_via_bindings.py::test_delete_to_end_of_line[selection1-01234] PASSED [ 87%] tests/text_area/test_edit_via_bindings.py::test_delete_to_end_of_line[selection2-012345678] PASSED [ 88%] tests/text_area/test_edit_via_bindings.py::test_delete_to_end_of_line[selection3-0123456789] PASSED [ 88%] tests/text_area/test_edit_via_bindings.py::test_delete_to_end_of_line[selection4-012345678] PASSED [ 88%] tests/text_area/test_edit_via_bindings.py::test_delete_to_end_of_line[selection5-0123456789] PASSED [ 88%] tests/text_area/test_edit_via_bindings.py::test_delete_to_end_of_line[selection6-01234] PASSED [ 88%] tests/text_area/test_edit_via_bindings.py::test_delete_to_end_of_line[selection7-01] PASSED [ 88%] tests/text_area/test_edit_via_bindings.py::test_delete_to_start_of_line[selection0-0123456789] PASSED [ 88%] tests/text_area/test_edit_via_bindings.py::test_delete_to_start_of_line[selection1-56789] PASSED [ 88%] tests/text_area/test_edit_via_bindings.py::test_delete_to_start_of_line[selection2-9] PASSED [ 88%] tests/text_area/test_edit_via_bindings.py::test_delete_to_start_of_line[selection3-] PASSED [ 88%] tests/text_area/test_edit_via_bindings.py::test_delete_to_start_of_line[selection4-9] PASSED [ 88%] tests/text_area/test_edit_via_bindings.py::test_delete_to_start_of_line[selection5-] PASSED [ 88%] tests/text_area/test_edit_via_bindings.py::test_delete_to_start_of_line[selection6-56789] PASSED [ 88%] tests/text_area/test_edit_via_bindings.py::test_delete_to_start_of_line[selection7-23456789] PASSED [ 88%] tests/text_area/test_edit_via_bindings.py::test_delete_word_left[selection0- 012 345 6789-final_selection0] PASSED [ 88%] tests/text_area/test_edit_via_bindings.py::test_delete_word_left[selection1- 2 345 6789-final_selection1] PASSED [ 88%] tests/text_area/test_edit_via_bindings.py::test_delete_word_left[selection2- 345 6789-final_selection2] PASSED [ 88%] tests/text_area/test_edit_via_bindings.py::test_delete_word_left[selection3- 345 6789-final_selection3] PASSED [ 88%] tests/text_area/test_edit_via_bindings.py::test_delete_word_left[selection4- 012 345 -final_selection4] PASSED [ 88%] tests/text_area/test_edit_via_bindings.py::test_delete_word_left[selection5- 01789-final_selection5] PASSED [ 88%] tests/text_area/test_edit_via_bindings.py::test_delete_word_left_with_tabs[selection0-\t012 \t 345\t6789-final_selection0] PASSED [ 88%] tests/text_area/test_edit_via_bindings.py::test_delete_word_left_with_tabs[selection1-\t \t 345\t6789-final_selection1] PASSED [ 88%] tests/text_area/test_edit_via_bindings.py::test_delete_word_left_with_tabs[selection2-\t\t 345\t6789-final_selection2] PASSED [ 88%] tests/text_area/test_edit_via_bindings.py::test_delete_word_left_with_tabs[selection3-\t 345\t6789-final_selection3] PASSED [ 88%] tests/text_area/test_edit_via_bindings.py::test_delete_word_left_with_tabs[selection4-\t012 \t 345\t-final_selection4] PASSED [ 88%] tests/text_area/test_edit_via_bindings.py::test_delete_word_left_with_tabs[selection5-\t0126789-final_selection5] PASSED [ 88%] tests/text_area/test_edit_via_bindings.py::test_delete_word_left_to_start_of_line PASSED [ 89%] tests/text_area/test_edit_via_bindings.py::test_delete_word_left_at_line_start PASSED [ 89%] tests/text_area/test_edit_via_bindings.py::test_delete_word_right[selection0-012 345 6789-final_selection0] PASSED [ 89%] tests/text_area/test_edit_via_bindings.py::test_delete_word_right[selection1- 01 345 6789-final_selection1] PASSED [ 89%] tests/text_area/test_edit_via_bindings.py::test_delete_word_right[selection2- 012345 6789-final_selection2] PASSED [ 89%] tests/text_area/test_edit_via_bindings.py::test_delete_word_right[selection3- 012 345 6789-final_selection3] PASSED [ 89%] tests/text_area/test_edit_via_bindings.py::test_delete_word_right[selection4- 01789-final_selection4] PASSED [ 89%] tests/text_area/test_edit_via_bindings.py::test_delete_word_right_delete_to_end_of_line PASSED [ 89%] tests/text_area/test_edit_via_bindings.py::test_delete_word_right_at_end_of_line PASSED [ 89%] tests/text_area/test_edit_via_bindings.py::test_edit_read_only_mode_does_nothing[enter] PASSED [ 89%] tests/text_area/test_edit_via_bindings.py::test_edit_read_only_mode_does_nothing[backspace] PASSED [ 89%] tests/text_area/test_edit_via_bindings.py::test_edit_read_only_mode_does_nothing[ctrl+u] PASSED [ 89%] tests/text_area/test_edit_via_bindings.py::test_edit_read_only_mode_does_nothing[ctrl+f] PASSED [ 89%] tests/text_area/test_edit_via_bindings.py::test_edit_read_only_mode_does_nothing[ctrl+w] PASSED [ 89%] tests/text_area/test_edit_via_bindings.py::test_edit_read_only_mode_does_nothing[ctrl+k] PASSED [ 89%] tests/text_area/test_edit_via_bindings.py::test_edit_read_only_mode_does_nothing[ctrl+x] PASSED [ 89%] tests/text_area/test_edit_via_bindings.py::test_edit_read_only_mode_does_nothing[space] PASSED [ 89%] tests/text_area/test_edit_via_bindings.py::test_edit_read_only_mode_does_nothing[1] PASSED [ 89%] tests/text_area/test_edit_via_bindings.py::test_edit_read_only_mode_does_nothing[tab] PASSED [ 89%] tests/text_area/test_edit_via_bindings.py::test_replace_lines_with_fewer_lines[selection0] PASSED [ 89%] tests/text_area/test_edit_via_bindings.py::test_replace_lines_with_fewer_lines[selection1] PASSED [ 89%] tests/text_area/test_edit_via_bindings.py::test_paste[selection0] PASSED [ 89%] tests/text_area/test_edit_via_bindings.py::test_paste[selection1] PASSED [ 89%] tests/text_area/test_edit_via_bindings.py::test_paste_read_only_does_nothing PASSED [ 89%] tests/text_area/test_escape_binding.py::test_escape_key_when_tab_behavior_is_focus PASSED [ 89%] tests/text_area/test_escape_binding.py::test_escape_key_when_tab_behavior_is_indent PASSED [ 89%] tests/text_area/test_history.py::test_simple_undo_redo PASSED [ 89%] tests/text_area/test_history.py::test_undo_selection_retained PASSED [ 90%] tests/text_area/test_history.py::test_undo_checkpoint_created_on_cursor_move PASSED [ 90%] tests/text_area/test_history.py::test_setting_text_property_resets_history PASSED [ 90%] tests/text_area/test_history.py::test_edits_batched_by_time PASSED [ 90%] tests/text_area/test_history.py::test_undo_checkpoint_character_limit_reached PASSED [ 90%] tests/text_area/test_history.py::test_redo_with_no_undo_is_noop PASSED [ 90%] tests/text_area/test_history.py::test_undo_with_empty_undo_stack_is_noop PASSED [ 90%] tests/text_area/test_history.py::test_redo_stack_cleared_on_edit PASSED [ 90%] tests/text_area/test_history.py::test_inserts_not_batched_with_deletes PASSED [ 90%] tests/text_area/test_history.py::test_paste_is_an_isolated_batch PASSED [ 90%] tests/text_area/test_history.py::test_focus_creates_checkpoint PASSED [ 90%] tests/text_area/test_history.py::test_undo_redo_deletions_batched PASSED [ 90%] tests/text_area/test_history.py::test_max_checkpoints PASSED [ 90%] tests/text_area/test_history.py::test_redo_stack PASSED [ 90%] tests/text_area/test_history.py::test_backward_selection_undo_redo PASSED [ 90%] tests/text_area/test_issue_4301.py::test_issue_4301_reproduction[selection0-A] PASSED [ 90%] tests/text_area/test_issue_4301.py::test_issue_4301_reproduction[selection1-delete] PASSED [ 90%] tests/text_area/test_issue_4301.py::test_issue_4301_reproduction[selection2-backspace] PASSED [ 90%] tests/text_area/test_issue_4301.py::test_issue_4301_reproduction[selection3-A] PASSED [ 90%] tests/text_area/test_issue_4301.py::test_issue_4301_reproduction[selection4-delete] PASSED [ 90%] tests/text_area/test_issue_4301.py::test_issue_4301_reproduction[selection5-backspace] PASSED [ 90%] tests/text_area/test_messages.py::test_changed_message_edit_via_api PASSED [ 90%] tests/text_area/test_messages.py::test_changed_message_via_typing PASSED [ 90%] tests/text_area/test_messages.py::test_changed_message_edit_via_assignment PASSED [ 90%] tests/text_area/test_messages.py::test_selection_changed_via_api PASSED [ 90%] tests/text_area/test_messages.py::test_selection_changed_via_typing PASSED [ 90%] tests/text_area/test_selection.py::test_default_selection PASSED [ 90%] tests/text_area/test_selection.py::test_cursor_location_get PASSED [ 91%] tests/text_area/test_selection.py::test_cursor_location_set PASSED [ 91%] tests/text_area/test_selection.py::test_cursor_location_set_while_selecting PASSED [ 91%] tests/text_area/test_selection.py::test_move_cursor_select PASSED [ 91%] tests/text_area/test_selection.py::test_move_cursor_relative PASSED [ 91%] tests/text_area/test_selection.py::test_selected_text_forward PASSED [ 91%] tests/text_area/test_selection.py::test_selected_text_backward PASSED [ 91%] tests/text_area/test_selection.py::test_selected_text_multibyte PASSED [ 91%] tests/text_area/test_selection.py::test_selection_clamp PASSED [ 91%] tests/text_area/test_selection.py::test_get_cursor_left_location[start0-end0] PASSED [ 91%] tests/text_area/test_selection.py::test_get_cursor_left_location[start1-end1] PASSED [ 91%] tests/text_area/test_selection.py::test_get_cursor_left_location[start2-end2] PASSED [ 91%] tests/text_area/test_selection.py::test_get_cursor_right_location[start0-end0] PASSED [ 91%] tests/text_area/test_selection.py::test_get_cursor_right_location[start1-end1] PASSED [ 91%] tests/text_area/test_selection.py::test_get_cursor_right_location[start2-end2] PASSED [ 91%] tests/text_area/test_selection.py::test_get_cursor_right_location[start3-end3] PASSED [ 91%] tests/text_area/test_selection.py::test_get_cursor_up_location[start0-end0] PASSED [ 91%] tests/text_area/test_selection.py::test_get_cursor_up_location[start1-end1] PASSED [ 91%] tests/text_area/test_selection.py::test_get_cursor_up_location[start2-end2] PASSED [ 91%] tests/text_area/test_selection.py::test_get_cursor_down_location[start0-end0] PASSED [ 91%] tests/text_area/test_selection.py::test_get_cursor_down_location[start1-end1] PASSED [ 91%] tests/text_area/test_selection.py::test_get_cursor_down_location[start2-end2] PASSED [ 91%] tests/text_area/test_selection.py::test_cursor_word_left_location[start0-end0] PASSED [ 91%] tests/text_area/test_selection.py::test_cursor_word_left_location[start1-end1] PASSED [ 91%] tests/text_area/test_selection.py::test_cursor_word_left_location[start2-end2] PASSED [ 91%] tests/text_area/test_selection.py::test_cursor_word_left_location[start3-end3] PASSED [ 91%] tests/text_area/test_selection.py::test_cursor_word_left_location[start4-end4] PASSED [ 91%] tests/text_area/test_selection.py::test_cursor_word_left_location[start5-end5] PASSED [ 92%] tests/text_area/test_selection.py::test_cursor_word_left_location[start6-end6] PASSED [ 92%] tests/text_area/test_selection.py::test_cursor_word_left_location[start7-end7] PASSED [ 92%] tests/text_area/test_selection.py::test_cursor_word_left_location[start8-end8] PASSED [ 92%] tests/text_area/test_selection.py::test_cursor_word_left_location[start9-end9] PASSED [ 92%] tests/text_area/test_selection.py::test_cursor_word_left_location[start10-end10] PASSED [ 92%] tests/text_area/test_selection.py::test_cursor_word_left_location[start11-end11] PASSED [ 92%] tests/text_area/test_selection.py::test_cursor_word_left_location[start12-end12] PASSED [ 92%] tests/text_area/test_selection.py::test_cursor_word_left_location[start13-end13] PASSED [ 92%] tests/text_area/test_selection.py::test_cursor_word_left_location[start14-end14] PASSED [ 92%] tests/text_area/test_selection.py::test_cursor_word_left_location[start15-end15] PASSED [ 92%] tests/text_area/test_selection.py::test_cursor_word_right_location[start0-end0] PASSED [ 92%] tests/text_area/test_selection.py::test_cursor_word_right_location[start1-end1] PASSED [ 92%] tests/text_area/test_selection.py::test_cursor_word_right_location[start2-end2] PASSED [ 92%] tests/text_area/test_selection.py::test_cursor_word_right_location[start3-end3] PASSED [ 92%] tests/text_area/test_selection.py::test_cursor_word_right_location[start4-end4] PASSED [ 92%] tests/text_area/test_selection.py::test_cursor_word_right_location[start5-end5] PASSED [ 92%] tests/text_area/test_selection.py::test_cursor_word_right_location[start6-end6] PASSED [ 92%] tests/text_area/test_selection.py::test_cursor_word_right_location[start7-end7] PASSED [ 92%] tests/text_area/test_selection.py::test_cursor_word_right_location[start8-end8] PASSED [ 92%] tests/text_area/test_selection.py::test_cursor_word_right_location[start9-end9] PASSED [ 92%] tests/text_area/test_selection.py::test_cursor_word_right_location[start10-end10] PASSED [ 92%] tests/text_area/test_selection.py::test_cursor_word_right_location[start11-end11] PASSED [ 92%] tests/text_area/test_selection.py::test_cursor_word_right_location[start12-end12] PASSED [ 92%] tests/text_area/test_selection.py::test_cursor_word_right_location[start13-end13] PASSED [ 92%] tests/text_area/test_selection.py::test_cursor_word_right_location[start14-end14] PASSED [ 92%] tests/text_area/test_selection.py::test_cursor_word_right_location[start15-end15] PASSED [ 93%] tests/text_area/test_selection.py::test_select_all[123\n456\n789-expected_selection0] PASSED [ 93%] tests/text_area/test_selection.py::test_select_all[123\n456\n789\n-expected_selection1] PASSED [ 93%] tests/text_area/test_selection.py::test_select_all[-expected_selection2] PASSED [ 93%] tests/text_area/test_selection.py::test_select_line[1-123\n456\n789\n-expected_selection0] PASSED [ 93%] tests/text_area/test_selection.py::test_select_line[2-123\n456\n789\n-expected_selection1] PASSED [ 93%] tests/text_area/test_selection.py::test_select_line[3-123\n456\n789\n-expected_selection2] PASSED [ 93%] tests/text_area/test_selection.py::test_select_line[1000-123\n456\n789\n-expected_selection3] PASSED [ 93%] tests/text_area/test_selection.py::test_select_line[0--expected_selection4] PASSED [ 93%] tests/text_area/test_selection.py::test_cursor_screen_offset_and_terminal_cursor_position_update PASSED [ 93%] tests/text_area/test_selection.py::test_cursor_screen_offset_and_terminal_cursor_position_scrolling PASSED [ 93%] tests/text_area/test_selection_bindings.py::test_mouse_click[True] PASSED [ 93%] tests/text_area/test_selection_bindings.py::test_mouse_click[False] PASSED [ 93%] tests/text_area/test_selection_bindings.py::test_mouse_click_clamp_from_right[True] PASSED [ 93%] tests/text_area/test_selection_bindings.py::test_mouse_click_clamp_from_right[False] PASSED [ 93%] tests/text_area/test_selection_bindings.py::test_mouse_click_gutter_clamp[True] PASSED [ 93%] tests/text_area/test_selection_bindings.py::test_mouse_click_gutter_clamp[False] PASSED [ 93%] tests/text_area/test_selection_bindings.py::test_cursor_movement_basic PASSED [ 93%] tests/text_area/test_selection_bindings.py::test_cursor_selection_right[True] PASSED [ 93%] tests/text_area/test_selection_bindings.py::test_cursor_selection_right[False] PASSED [ 93%] tests/text_area/test_selection_bindings.py::test_cursor_selection_right_to_previous_line[True] PASSED [ 93%] tests/text_area/test_selection_bindings.py::test_cursor_selection_right_to_previous_line[False] PASSED [ 93%] tests/text_area/test_selection_bindings.py::test_cursor_selection_left[True] PASSED [ 93%] tests/text_area/test_selection_bindings.py::test_cursor_selection_left[False] PASSED [ 93%] tests/text_area/test_selection_bindings.py::test_cursor_selection_left_to_previous_line[True] PASSED [ 93%] tests/text_area/test_selection_bindings.py::test_cursor_selection_left_to_previous_line[False] PASSED [ 93%] tests/text_area/test_selection_bindings.py::test_cursor_selection_up[True] PASSED [ 93%] tests/text_area/test_selection_bindings.py::test_cursor_selection_up[False] PASSED [ 94%] tests/text_area/test_selection_bindings.py::test_cursor_selection_up_when_cursor_on_first_line[True] PASSED [ 94%] tests/text_area/test_selection_bindings.py::test_cursor_selection_up_when_cursor_on_first_line[False] PASSED [ 94%] tests/text_area/test_selection_bindings.py::test_cursor_selection_down[True] PASSED [ 94%] tests/text_area/test_selection_bindings.py::test_cursor_selection_down[False] PASSED [ 94%] tests/text_area/test_selection_bindings.py::test_cursor_selection_down_when_cursor_on_last_line[True] PASSED [ 94%] tests/text_area/test_selection_bindings.py::test_cursor_selection_down_when_cursor_on_last_line[False] PASSED [ 94%] tests/text_area/test_selection_bindings.py::test_cursor_word_right[True] PASSED [ 94%] tests/text_area/test_selection_bindings.py::test_cursor_word_right[False] PASSED [ 94%] tests/text_area/test_selection_bindings.py::test_cursor_word_right_select[True] PASSED [ 94%] tests/text_area/test_selection_bindings.py::test_cursor_word_right_select[False] PASSED [ 94%] tests/text_area/test_selection_bindings.py::test_cursor_word_left[True] PASSED [ 94%] tests/text_area/test_selection_bindings.py::test_cursor_word_left[False] PASSED [ 94%] tests/text_area/test_selection_bindings.py::test_cursor_word_left_select[True] PASSED [ 94%] tests/text_area/test_selection_bindings.py::test_cursor_word_left_select[False] PASSED [ 94%] tests/text_area/test_selection_bindings.py::test_cursor_to_line_end[True-end] PASSED [ 94%] tests/text_area/test_selection_bindings.py::test_cursor_to_line_end[True-ctrl+e] PASSED [ 94%] tests/text_area/test_selection_bindings.py::test_cursor_to_line_end[False-end] PASSED [ 94%] tests/text_area/test_selection_bindings.py::test_cursor_to_line_end[False-ctrl+e] PASSED [ 94%] tests/text_area/test_selection_bindings.py::test_cursor_to_line_home_basic_behaviour[True-home] PASSED [ 94%] tests/text_area/test_selection_bindings.py::test_cursor_to_line_home_basic_behaviour[True-ctrl+a] PASSED [ 94%] tests/text_area/test_selection_bindings.py::test_cursor_to_line_home_basic_behaviour[False-home] PASSED [ 94%] tests/text_area/test_selection_bindings.py::test_cursor_to_line_home_basic_behaviour[False-ctrl+a] PASSED [ 94%] tests/text_area/test_selection_bindings.py::test_cursor_line_home_smart_home[True-cursor_start0-cursor_destination0] PASSED [ 94%] tests/text_area/test_selection_bindings.py::test_cursor_line_home_smart_home[True-cursor_start1-cursor_destination1] PASSED [ 94%] tests/text_area/test_selection_bindings.py::test_cursor_line_home_smart_home[True-cursor_start2-cursor_destination2] PASSED [ 94%] tests/text_area/test_selection_bindings.py::test_cursor_line_home_smart_home[True-cursor_start3-cursor_destination3] PASSED [ 94%] tests/text_area/test_selection_bindings.py::test_cursor_line_home_smart_home[True-cursor_start4-cursor_destination4] PASSED [ 95%] tests/text_area/test_selection_bindings.py::test_cursor_line_home_smart_home[True-cursor_start5-cursor_destination5] PASSED [ 95%] tests/text_area/test_selection_bindings.py::test_cursor_line_home_smart_home[False-cursor_start0-cursor_destination0] PASSED [ 95%] tests/text_area/test_selection_bindings.py::test_cursor_line_home_smart_home[False-cursor_start1-cursor_destination1] PASSED [ 95%] tests/text_area/test_selection_bindings.py::test_cursor_line_home_smart_home[False-cursor_start2-cursor_destination2] PASSED [ 95%] tests/text_area/test_selection_bindings.py::test_cursor_line_home_smart_home[False-cursor_start3-cursor_destination3] PASSED [ 95%] tests/text_area/test_selection_bindings.py::test_cursor_line_home_smart_home[False-cursor_start4-cursor_destination4] PASSED [ 95%] tests/text_area/test_selection_bindings.py::test_cursor_line_home_smart_home[False-cursor_start5-cursor_destination5] PASSED [ 95%] tests/text_area/test_selection_bindings.py::test_cursor_page_down[True] PASSED [ 95%] tests/text_area/test_selection_bindings.py::test_cursor_page_down[False] PASSED [ 95%] tests/text_area/test_selection_bindings.py::test_cursor_page_up[True] PASSED [ 95%] tests/text_area/test_selection_bindings.py::test_cursor_page_up[False] PASSED [ 95%] tests/text_area/test_selection_bindings.py::test_cursor_vertical_movement_visual_alignment_snapping[True] PASSED [ 95%] tests/text_area/test_selection_bindings.py::test_cursor_vertical_movement_visual_alignment_snapping[False] PASSED [ 95%] tests/text_area/test_selection_bindings.py::test_select_line_binding[True] PASSED [ 95%] tests/text_area/test_selection_bindings.py::test_select_line_binding[False] PASSED [ 95%] tests/text_area/test_selection_bindings.py::test_select_all_binding[True] PASSED [ 95%] tests/text_area/test_selection_bindings.py::test_select_all_binding[False] PASSED [ 95%] tests/text_area/test_setting_themes.py::test_default_theme PASSED [ 95%] tests/text_area/test_setting_themes.py::test_setting_builtin_themes PASSED [ 95%] tests/text_area/test_setting_themes.py::test_setting_unknown_theme_raises_exception PASSED [ 95%] tests/text_area/test_setting_themes.py::test_registering_and_setting_theme PASSED [ 95%] tests/toggles/test_checkbox.py::test_checkbox_initial_state PASSED [ 95%] tests/toggles/test_checkbox.py::test_checkbox_toggle PASSED [ 95%] tests/toggles/test_labels.py::test_change_labels PASSED [ 95%] tests/toggles/test_radiobutton.py::test_radio_button_initial_state PASSED [ 95%] tests/toggles/test_radiobutton.py::test_radio_button_toggle PASSED [ 95%] tests/toggles/test_radioset.py::test_radio_sets_initial_state PASSED [ 96%] tests/toggles/test_radioset.py::test_click_sets_focus PASSED [ 96%] tests/toggles/test_radioset.py::test_radio_sets_toggle PASSED [ 96%] tests/toggles/test_radioset.py::test_radioset_same_button_mash PASSED [ 96%] tests/toggles/test_radioset.py::test_radioset_inner_navigation PASSED [ 96%] tests/toggles/test_radioset.py::test_radioset_inner_navigation_post_build PASSED [ 96%] tests/toggles/test_radioset.py::test_radioset_breakout_navigation PASSED [ 96%] tests/toggles/test_radioset.py::test_there_can_only_be_one PASSED [ 96%] tests/toggles/test_radioset.py::test_keyboard_navigation_with_disabled_buttons PASSED [ 96%] tests/tree/test_directory_tree.py::test_directory_tree_file_selected_message PASSED [ 96%] tests/tree/test_directory_tree.py::test_directory_tree_directory_selected_message PASSED [ 96%] tests/tree/test_directory_tree.py::test_directory_tree_reload_node PASSED [ 96%] tests/tree/test_directory_tree.py::test_directory_tree_reload_other_node PASSED [ 96%] tests/tree/test_directory_tree.py::test_directory_tree_reloading_preserves_state PASSED [ 96%] tests/tree/test_node_refresh.py::test_initial_state PASSED [ 96%] tests/tree/test_node_refresh.py::test_root_refresh PASSED [ 96%] tests/tree/test_node_refresh.py::test_child_refresh PASSED [ 96%] tests/tree/test_node_refresh.py::test_grandchild_refresh PASSED [ 96%] tests/tree/test_tree_availability.py::test_creating_disabled_tree PASSED [ 96%] tests/tree/test_tree_availability.py::test_creating_enabled_tree PASSED [ 96%] tests/tree/test_tree_availability.py::test_disabled_tree_node_selected_message [('NodeHighlighted', 'test-tree'), ('NodeExpanded', 'test-tree')] PASSED [ 96%] tests/tree/test_tree_availability.py::test_enabled_tree_node_selected_message [('NodeHighlighted', 'test-tree'), ('NodeExpanded', 'test-tree')] PASSED [ 96%] tests/tree/test_tree_clearing.py::test_tree_simple_clear PASSED [ 96%] tests/tree/test_tree_clearing.py::test_tree_reset_with_label PASSED [ 96%] tests/tree/test_tree_clearing.py::test_tree_reset_with_label_and_data PASSED [ 96%] tests/tree/test_tree_clearing.py::test_remove_node PASSED [ 96%] tests/tree/test_tree_clearing.py::test_remove_node_children PASSED [ 97%] tests/tree/test_tree_clearing.py::test_tree_remove_children_of_root PASSED [ 97%] tests/tree/test_tree_clearing.py::test_attempt_to_remove_root PASSED [ 97%] tests/tree/test_tree_cursor.py::test_move_cursor PASSED [ 97%] tests/tree/test_tree_cursor.py::test_move_cursor_reset PASSED [ 97%] tests/tree/test_tree_cursor.py::test_select_node PASSED [ 97%] tests/tree/test_tree_cursor.py::test_select_node_reset PASSED [ 97%] tests/tree/test_tree_expand_etc.py::test_tree_node_expand PASSED [ 97%] tests/tree/test_tree_expand_etc.py::test_tree_node_expand_all PASSED [ 97%] tests/tree/test_tree_expand_etc.py::test_tree_node_collapse PASSED [ 97%] tests/tree/test_tree_expand_etc.py::test_tree_node_collapse_all PASSED [ 97%] tests/tree/test_tree_expand_etc.py::test_tree_node_toggle PASSED [ 97%] tests/tree/test_tree_expand_etc.py::test_tree_node_toggle_all PASSED [ 97%] tests/tree/test_tree_get_node_by_id.py::test_get_tree_node_by_id PASSED [ 97%] tests/tree/test_tree_messages.py::test_tree_node_selected_message PASSED [ 97%] tests/tree/test_tree_messages.py::test_tree_node_selected_message_no_auto PASSED [ 97%] tests/tree/test_tree_messages.py::test_tree_node_expanded_message PASSED [ 97%] tests/tree/test_tree_messages.py::test_tree_node_collapsed_message PASSED [ 97%] tests/tree/test_tree_messages.py::test_tree_node_highlighted_message PASSED [ 97%] tests/tree/test_tree_messages.py::test_expand_node_from_code PASSED [ 97%] tests/tree/test_tree_messages.py::test_collapse_node_from_code PASSED [ 97%] tests/tree/test_tree_node_add.py::test_tree_node_add_before_and_after_raises_exception PASSED [ 97%] tests/tree/test_tree_node_add.py::test_tree_node_add_before_or_after_with_invalid_type_raises_exception PASSED [ 97%] tests/tree/test_tree_node_add.py::test_tree_node_add_before_index PASSED [ 97%] tests/tree/test_tree_node_add.py::test_tree_node_add_after_index PASSED [ 97%] tests/tree/test_tree_node_add.py::test_tree_node_add_relative_to_unknown_node_raises_exception PASSED [ 97%] tests/tree/test_tree_node_add.py::test_tree_node_add_before_node PASSED [ 97%] tests/tree/test_tree_node_add.py::test_tree_node_add_after_node PASSED [ 98%] tests/tree/test_tree_node_add.py::test_tree_node_add_leaf_before_or_after PASSED [ 98%] tests/tree/test_tree_node_children.py::test_tree_node_children PASSED [ 98%] tests/tree/test_tree_node_label.py::test_tree_node_label PASSED [ 98%] tests/tree/test_tree_node_label.py::test_tree_node_label_via_tree PASSED [ 98%] tests/tree/test_tree_node_parent.py::test_tree_node_parent PASSED [ 98%] tests/workers/test_work_decorator.py::test_async_work PASSED [ 98%] tests/workers/test_work_decorator.py::test_async_thread_work PASSED [ 98%] tests/workers/test_work_decorator.py::test_thread_work PASSED [ 98%] tests/workers/test_work_decorator.py::test_decorate_non_async_no_thread_argument PASSED [ 98%] tests/workers/test_work_decorator.py::test_decorate_non_async_no_thread_is_false PASSED [ 98%] tests/workers/test_work_decorator.py::test_calling_workers_from_within_workers[call_stack0] PASSED [ 98%] tests/workers/test_work_decorator.py::test_calling_workers_from_within_workers[call_stack1] PASSED [ 98%] tests/workers/test_work_decorator.py::test_calling_workers_from_within_workers[call_stack2] PASSED [ 98%] tests/workers/test_work_decorator.py::test_calling_workers_from_within_workers[call_stack3] PASSED [ 98%] tests/workers/test_work_decorator.py::test_calling_workers_from_within_workers[call_stack4] PASSED [ 98%] tests/workers/test_work_decorator.py::test_calling_workers_from_within_workers[call_stack5] PASSED [ 98%] tests/workers/test_work_decorator.py::test_calling_workers_from_within_workers[call_stack6] PASSED [ 98%] tests/workers/test_work_decorator.py::test_calling_workers_from_within_workers[call_stack7] PASSED [ 98%] tests/workers/test_work_decorator.py::test_calling_workers_from_within_workers[call_stack8] PASSED [ 98%] tests/workers/test_work_decorator.py::test_calling_workers_from_within_workers[call_stack9] PASSED [ 98%] tests/workers/test_work_decorator.py::test_calling_workers_from_within_workers[call_stack10] PASSED [ 98%] tests/workers/test_work_decorator.py::test_calling_workers_from_within_workers[call_stack11] PASSED [ 98%] tests/workers/test_work_decorator.py::test_calling_workers_from_within_workers[call_stack12] PASSED [ 98%] tests/workers/test_work_decorator.py::test_calling_workers_from_within_workers[call_stack13] PASSED [ 98%] tests/workers/test_work_decorator.py::test_calling_workers_from_within_workers[call_stack14] PASSED [ 98%] tests/workers/test_work_decorator.py::test_calling_workers_from_within_workers[call_stack15] PASSED [ 98%] tests/workers/test_work_decorator.py::test_calling_workers_from_within_workers[call_stack16] PASSED [ 99%] tests/workers/test_work_decorator.py::test_calling_workers_from_within_workers[call_stack17] PASSED [ 99%] tests/workers/test_work_decorator.py::test_calling_workers_from_within_workers[call_stack18] PASSED [ 99%] tests/workers/test_work_decorator.py::test_calling_workers_from_within_workers[call_stack19] PASSED [ 99%] tests/workers/test_work_decorator.py::test_calling_workers_from_within_workers[call_stack20] PASSED [ 99%] tests/workers/test_work_decorator.py::test_calling_workers_from_within_workers[call_stack21] PASSED [ 99%] tests/workers/test_work_decorator.py::test_calling_workers_from_within_workers[call_stack22] PASSED [ 99%] tests/workers/test_work_decorator.py::test_calling_workers_from_within_workers[call_stack23] PASSED [ 99%] tests/workers/test_work_decorator.py::test_calling_workers_from_within_workers[call_stack24] PASSED [ 99%] tests/workers/test_work_decorator.py::test_calling_workers_from_within_workers[call_stack25] PASSED [ 99%] tests/workers/test_work_decorator.py::test_calling_workers_from_within_workers[call_stack26] PASSED [ 99%] tests/workers/test_work_decorator.py::test_calling_workers_from_within_workers[call_stack27] PASSED [ 99%] tests/workers/test_worker.py::test_initialize PASSED [ 99%] tests/workers/test_worker.py::test_run_success PASSED [ 99%] tests/workers/test_worker.py::test_run_error PASSED [ 99%] tests/workers/test_worker.py::test_run_cancel PASSED [ 99%] tests/workers/test_worker.py::test_run_cancel_immediately PASSED [ 99%] tests/workers/test_worker.py::test_get_worker PASSED [ 99%] tests/workers/test_worker.py::test_no_active_worker PASSED [ 99%] tests/workers/test_worker.py::test_progress_update PASSED [ 99%] tests/workers/test_worker.py::test_double_start PASSED [ 99%] tests/workers/test_worker.py::test_self_referential_deadlock PASSED [ 99%] tests/workers/test_worker.py::test_wait_without_start PASSED [ 99%] tests/workers/test_worker_manager.py::test_worker_manager_init PASSED [ 99%] tests/workers/test_worker_manager.py::test_run_worker_async PASSED [ 99%] tests/workers/test_worker_manager.py::test_run_worker_thread_non_async PASSED [ 99%] tests/workers/test_worker_manager.py::test_run_worker_thread_async PASSED [100%] =============================== warnings summary =============================== tests/test_reactive.py::test_sync_reactive_watch_callbacks_go_on_the_watcher /home/buildozer/aports/testing/py3-textual/src/textual-0.85.2/.testenv/lib/python3.12/site-packages/textual/strip.py:105: RuntimeWarning: coroutine 'test_async_reactive_watch_callbacks_go_on_the_watcher..MyApp.callback' was never awaited ] = FIFOCache(4) Enable tracemalloc to get traceback where the object was allocated. See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html ====== 2669 passed, 1 skipped, 4 xfailed, 1 warning in 198.76s (0:03:18) ======= /usr/lib/python3.12/site-packages/_pytest/pathlib.py:91: PytestWarning: (rm_rf) error removing /tmp/pytest-of-buildozer/garbage-28a7fa32-575d-4dab-98e6-ab33750b88ce/popen-gw9/test_discovery_via_path_in_non0 : [Errno 39] Directory not empty: '/tmp/pytest-of-buildozer/garbage-28a7fa32-575d-4dab-98e6-ab33750b88ce/popen-gw9/test_discovery_via_path_in_non0' warnings.warn( /usr/lib/python3.12/site-packages/_pytest/pathlib.py:91: PytestWarning: (rm_rf) error removing /tmp/pytest-of-buildozer/garbage-28a7fa32-575d-4dab-98e6-ab33750b88ce/popen-gw9 : [Errno 39] Directory not empty: '/tmp/pytest-of-buildozer/garbage-28a7fa32-575d-4dab-98e6-ab33750b88ce/popen-gw9' warnings.warn( /usr/lib/python3.12/site-packages/_pytest/pathlib.py:91: PytestWarning: (rm_rf) error removing /tmp/pytest-of-buildozer/garbage-28a7fa32-575d-4dab-98e6-ab33750b88ce : [Errno 39] Directory not empty: '/tmp/pytest-of-buildozer/garbage-28a7fa32-575d-4dab-98e6-ab33750b88ce' warnings.warn( /usr/lib/python3.12/site-packages/_pytest/pathlib.py:91: PytestWarning: (rm_rf) error removing /tmp/pytest-of-buildozer/garbage-9d6c65e8-3f44-43fe-8dec-83123f7848fb/popen-gw2/test_discovery_via_path_in_non0 : [Errno 39] Directory not empty: '/tmp/pytest-of-buildozer/garbage-9d6c65e8-3f44-43fe-8dec-83123f7848fb/popen-gw2/test_discovery_via_path_in_non0' warnings.warn( /usr/lib/python3.12/site-packages/_pytest/pathlib.py:91: PytestWarning: (rm_rf) error removing /tmp/pytest-of-buildozer/garbage-9d6c65e8-3f44-43fe-8dec-83123f7848fb/popen-gw2 : [Errno 39] Directory not empty: '/tmp/pytest-of-buildozer/garbage-9d6c65e8-3f44-43fe-8dec-83123f7848fb/popen-gw2' warnings.warn( /usr/lib/python3.12/site-packages/_pytest/pathlib.py:91: PytestWarning: (rm_rf) error removing /tmp/pytest-of-buildozer/garbage-9d6c65e8-3f44-43fe-8dec-83123f7848fb : [Errno 39] Directory not empty: '/tmp/pytest-of-buildozer/garbage-9d6c65e8-3f44-43fe-8dec-83123f7848fb' warnings.warn( >>> py3-textual: Entering fakeroot... >>> py3-textual-pyc*: Running split function pyc... 'usr/lib/python3.12/site-packages/textual/widgets/__pycache__' -> '/home/buildozer/aports/testing/py3-textual/pkg/py3-textual-pyc/usr/lib/python3.12/site-packages/textual/widgets/__pycache__' 'usr/lib/python3.12/site-packages/textual/__pycache__' -> '/home/buildozer/aports/testing/py3-textual/pkg/py3-textual-pyc/usr/lib/python3.12/site-packages/textual/__pycache__' 'usr/lib/python3.12/site-packages/textual/renderables/__pycache__' -> '/home/buildozer/aports/testing/py3-textual/pkg/py3-textual-pyc/usr/lib/python3.12/site-packages/textual/renderables/__pycache__' 'usr/lib/python3.12/site-packages/textual/demo/__pycache__' -> '/home/buildozer/aports/testing/py3-textual/pkg/py3-textual-pyc/usr/lib/python3.12/site-packages/textual/demo/__pycache__' 'usr/lib/python3.12/site-packages/textual/css/__pycache__' -> '/home/buildozer/aports/testing/py3-textual/pkg/py3-textual-pyc/usr/lib/python3.12/site-packages/textual/css/__pycache__' 'usr/lib/python3.12/site-packages/textual/document/__pycache__' -> '/home/buildozer/aports/testing/py3-textual/pkg/py3-textual-pyc/usr/lib/python3.12/site-packages/textual/document/__pycache__' 'usr/lib/python3.12/site-packages/textual/drivers/__pycache__' -> '/home/buildozer/aports/testing/py3-textual/pkg/py3-textual-pyc/usr/lib/python3.12/site-packages/textual/drivers/__pycache__' 'usr/lib/python3.12/site-packages/textual/layouts/__pycache__' -> '/home/buildozer/aports/testing/py3-textual/pkg/py3-textual-pyc/usr/lib/python3.12/site-packages/textual/layouts/__pycache__' >>> py3-textual-pyc*: Preparing subpackage py3-textual-pyc... >>> py3-textual-pyc*: Running postcheck for py3-textual-pyc >>> py3-textual*: Running postcheck for py3-textual >>> py3-textual*: Preparing package py3-textual... >>> py3-textual-pyc*: Tracing dependencies... python3 py3-linkify-it-py py3-markdown-it-py py3-mdit-py-plugins py3-platformdirs py3-rich py3-typing-extensions python3~3.12 >>> py3-textual-pyc*: Package size: 2.6 MB >>> py3-textual-pyc*: Compressing data... >>> py3-textual-pyc*: Create checksum... >>> py3-textual-pyc*: Create py3-textual-pyc-0.85.2-r0.apk >>> py3-textual*: Tracing dependencies... python3 py3-linkify-it-py py3-markdown-it-py py3-mdit-py-plugins py3-platformdirs py3-rich py3-typing-extensions python3~3.12 >>> py3-textual*: Package size: 2.2 MB >>> py3-textual*: Compressing data... >>> py3-textual*: Create checksum... >>> py3-textual*: Create py3-textual-0.85.2-r0.apk >>> py3-textual: Build complete at Sun, 17 Nov 2024 17:02:08 +0000 elapsed time 0h 3m 28s >>> py3-textual: Cleaning up srcdir >>> py3-textual: Cleaning up pkgdir >>> py3-textual: Uninstalling dependencies... (1/59) Purging .makedepends-py3-textual (20241117.165842) (2/59) Purging py3-linkify-it-py-pyc (2.0.3-r1) (3/59) Purging py3-linkify-it-py (2.0.3-r1) (4/59) Purging py3-uc-micro-py (1.0.2-r1) (5/59) Purging py3-mdit-py-plugins-pyc (0.4.2-r0) (6/59) Purging py3-mdit-py-plugins (0.4.2-r0) (7/59) Purging py3-platformdirs-pyc (4.3.6-r0) (8/59) Purging py3-platformdirs (4.3.6-r0) (9/59) Purging py3-rich-pyc (13.9.4-r0) (10/59) Purging py3-rich (13.9.4-r0) (11/59) Purging py3-markdown-it-py-pyc (3.0.0-r1) (12/59) Purging py3-markdown-it-py (3.0.0-r1) (13/59) Purging py3-attrs-pyc (24.2.0-r0) (14/59) Purging py3-attrs (24.2.0-r0) (15/59) Purging py3-mdurl-pyc (0.1.2-r3) (16/59) Purging py3-mdurl (0.1.2-r3) (17/59) Purging py3-pygments-pyc (2.18.0-r0) (18/59) Purging py3-pygments (2.18.0-r0) (19/59) Purging py3-typing-extensions-pyc (4.12.2-r0) (20/59) Purging py3-typing-extensions (4.12.2-r0) (21/59) Purging py3-gpep517-pyc (16-r0) (22/59) Purging py3-gpep517 (16-r0) (23/59) Purging py3-installer-pyc (0.7.0-r2) (24/59) Purging py3-installer (0.7.0-r2) (25/59) Purging py3-poetry-core-pyc (1.9.1-r0) (26/59) Purging py3-poetry-core (1.9.1-r0) (27/59) Purging py3-fastjsonschema-pyc (2.20.0-r0) (28/59) Purging py3-fastjsonschema (2.20.0-r0) (29/59) Purging py3-lark-parser-pyc (1.1.9-r1) (30/59) Purging py3-lark-parser (1.1.9-r1) (31/59) Purging py3-pytest-xdist-pyc (3.6.1-r0) (32/59) Purging py3-pytest-xdist (3.6.1-r0) (33/59) Purging py3-execnet-pyc (2.1.1-r0) (34/59) Purging py3-execnet (2.1.1-r0) (35/59) Purging py3-pytest-asyncio-pyc (0.24.0-r0) (36/59) Purging py3-pytest-asyncio (0.24.0-r0) (37/59) Purging py3-pytest-pyc (8.3.3-r0) (38/59) Purging py3-pytest (8.3.3-r0) (39/59) Purging py3-iniconfig-pyc (2.0.0-r1) (40/59) Purging py3-iniconfig (2.0.0-r1) (41/59) Purging py3-packaging-pyc (24.2-r0) (42/59) Purging py3-packaging (24.2-r0) (43/59) Purging py3-parsing-pyc (3.1.4-r0) (44/59) Purging py3-parsing (3.1.4-r0) (45/59) Purging py3-pluggy-pyc (1.5.0-r0) (46/59) Purging py3-pluggy (1.5.0-r0) (47/59) Purging py3-py-pyc (1.11.0-r4) (48/59) Purging py3-py (1.11.0-r4) (49/59) Purging python3-pyc (3.12.7-r1) (50/59) Purging python3-pycache-pyc0 (3.12.7-r1) (51/59) Purging pyc (3.12.7-r1) (52/59) Purging python3 (3.12.7-r1) (53/59) Purging gdbm (1.24-r0) (54/59) Purging libbz2 (1.0.8-r6) (55/59) Purging libffi (3.4.6-r0) (56/59) Purging libpanelw (6.5_p20241006-r3) (57/59) Purging mpdecimal (4.0.0-r0) (58/59) Purging sqlite-libs (3.47.0-r0) (59/59) Purging xz-libs (5.6.3-r0) Executing busybox-1.37.0-r7.trigger OK: 246 MiB in 102 packages >>> py3-textual: Updating the testing/loongarch64 repository index... >>> py3-textual: Signing the index...