Coverage report: 100%

Files Functions Classes

coverage.py v7.11.0, created at 2025-11-07 20:46 -0800

File function statements missing excluded branches partial coverage
src/countdown/__init__.py (no function) 0 0 0 0 0 100%
src/countdown/__main__.py get_number_lines 1 0 0 0 0 100%
src/countdown/__main__.py run_countdown 35 0 0 16 0 100%
src/countdown/__main__.py main 4 0 0 2 0 100%
src/countdown/__main__.py (no function) 14 0 1 0 0 100%
src/countdown/digits.py paragraphs 8 0 0 6 0 100%
src/countdown/digits.py transpose 1 0 0 0 0 100%
src/countdown/digits.py center 1 0 0 0 0 100%
src/countdown/digits.py populate_constants 17 0 0 6 0 100%
src/countdown/digits.py (no function) 9 0 0 0 0 100%
src/countdown/display.py enable_ansi_escape_codes 0 0 15 0 0 100%
src/countdown/display.py get_required_width 3 0 0 0 0 100%
src/countdown/display.py get_chars_for_terminal 8 0 0 4 0 100%
src/countdown/display.py print_full_screen 19 0 0 6 0 100%
src/countdown/display.py (no function) 13 0 1 0 0 100%
src/countdown/keys.py is_pause_key 1 0 0 0 0 100%
src/countdown/keys.py is_time_adjust_key 1 0 0 0 0 100%
src/countdown/keys.py get_time_adjustment 5 0 0 4 0 100%
src/countdown/keys.py (no function) 3 0 0 0 0 100%
src/countdown/terminal.py check_for_keypress 0 0 7 0 0 100%
src/countdown/terminal.py read_key 0 0 10 0 0 100%
src/countdown/terminal.py drain_keypresses 0 0 3 0 0 100%
src/countdown/terminal.py setup_terminal 0 0 10 0 0 100%
src/countdown/terminal.py restore_terminal 0 0 4 0 0 100%
src/countdown/terminal.py (no function) 1 0 12 0 0 100%
src/countdown/timer.py duration 5 0 0 2 0 100%
src/countdown/timer.py get_number_lines 9 0 0 4 0 100%
src/countdown/timer.py (no function) 4 0 0 0 0 100%
tests/__init__.py (no function) 0 0 0 0 0 100%
tests/conftest.py pytest_assertrepr_compare 0 0 16 0 0 100%
tests/conftest.py (no function) 3 0 5 0 0 100%
tests/test_display.py fake_size 2 0 0 0 0 100%
tests/test_display.py fake_size.get_terminal_size 1 0 0 0 0 100%
tests/test_display.py test_print_full_screen_tiny_terminal 5 0 0 0 0 100%
tests/test_display.py test_print_full_screen_larger_terminal 5 0 0 0 0 100%
tests/test_display.py test_print_full_screen_multiline_text 5 0 0 0 0 100%
tests/test_display.py test_print_full_screen_paused_shows_red_and_message 7 0 0 0 0 100%
tests/test_display.py test_print_full_screen_not_paused_no_red_or_message 5 0 0 0 0 100%
tests/test_display.py test_print_full_screen_paused_tiny_terminal_no_message 6 0 0 0 0 100%
tests/test_display.py test_digit_sizes_available 5 0 0 0 0 100%
tests/test_display.py test_all_characters_in_each_size 5 0 0 2 0 100%
tests/test_display.py test_char_heights_match_size 6 0 0 4 0 100%
tests/test_display.py test_get_chars_for_terminal_selects_largest_that_fits 24 0 0 0 0 100%
tests/test_display.py test_different_sizes_render_correctly 13 0 0 0 0 100%
tests/test_display.py test_width_constraints_force_smaller_size 12 0 0 0 0 100%
tests/test_display.py (no function) 17 0 0 0 0 100%
tests/test_keys.py test_is_pause_key_with_strings 8 0 0 0 0 100%
tests/test_keys.py test_is_time_adjust_key_with_strings 5 0 0 0 0 100%
tests/test_keys.py test_get_time_adjustment 4 0 0 0 0 100%
tests/test_keys.py (no function) 4 0 0 0 0 100%
tests/test_main.py FakeSleep.__init__ 2 0 0 0 0 100%
tests/test_main.py FakeSleep.__call__ 4 0 0 4 0 100%
tests/test_main.py fake_size 2 0 0 0 0 100%
tests/test_main.py fake_size.get_terminal_size 1 0 0 0 0 100%
tests/test_main.py clean_main_output 3 0 0 0 0 100%
tests/test_main.py runner 1 0 0 0 0 100%
tests/test_main.py test_main_with_no_arguments 5 0 0 0 0 100%
tests/test_main.py test_version_works 3 0 0 0 0 100%
tests/test_main.py test_main_3_seconds_sleeps_4_times 7 0 0 0 0 100%
tests/test_main.py test_main_1_minute 5 0 0 0 0 100%
tests/test_main.py test_main_10_minutes_has_over_600_clear_screens 6 0 0 0 0 100%
tests/test_main.py test_main_enables_alt_buffer_and_hides_cursor_at_beginning 5 0 0 0 0 100%
tests/test_main.py test_main_disable_alt_buffer_and_show_cursor_at_end 5 0 0 0 0 100%
tests/test_main.py test_main_early_exit_still_shows_cursor_at_end 6 0 0 0 0 100%
tests/test_main.py test_pause_key_triggers_pause 15 0 0 0 0 100%
tests/test_main.py test_pause_key_triggers_pause.fake_check_for_keypress 4 0 0 2 0 100%
tests/test_main.py test_pause_key_triggers_pause.fake_read_key 2 0 0 0 0 100%
tests/test_main.py test_pause_key_triggers_pause.fake_drain 1 0 0 0 0 100%
tests/test_main.py test_non_pause_key_ignored 13 0 0 0 0 100%
tests/test_main.py test_non_pause_key_ignored.fake_check_for_keypress 4 0 0 2 0 100%
tests/test_main.py test_non_pause_key_ignored.fake_read_key 2 0 0 0 0 100%
tests/test_main.py test_sleep_exits_early_on_keypress 15 0 0 0 0 100%
tests/test_main.py test_sleep_exits_early_on_keypress.fake_sleep 3 0 0 2 0 100%
tests/test_main.py test_sleep_exits_early_on_keypress.fake_check_for_keypress 2 0 0 0 0 100%
tests/test_main.py test_sleep_exits_early_on_keypress.fake_read_key 1 0 0 0 0 100%
tests/test_main.py test_sleep_exits_early_on_keypress.fake_drain 1 0 0 0 0 100%
tests/test_main.py test_resume_from_pause_exits_early 22 0 0 0 0 100%
tests/test_main.py test_resume_from_pause_exits_early.fake_sleep 3 0 0 2 0 100%
tests/test_main.py test_resume_from_pause_exits_early.fake_check_for_keypress 2 0 0 0 0 100%
tests/test_main.py test_resume_from_pause_exits_early.fake_read_key 3 0 0 0 0 100%
tests/test_main.py test_resume_from_pause_exits_early.fake_drain 1 0 0 0 0 100%
tests/test_main.py test_resume_from_pause_exits_early.tracking_print 2 0 0 0 0 100%
tests/test_main.py test_add_time_with_plus_key 16 0 0 0 0 100%
tests/test_main.py test_add_time_with_plus_key.fake_get_number_lines 2 0 0 0 0 100%
tests/test_main.py test_add_time_with_plus_key.fake_check_for_keypress 1 0 0 0 0 100%
tests/test_main.py test_add_time_with_plus_key.fake_read_key 1 0 0 0 0 100%
tests/test_main.py test_add_time_with_plus_key.fake_drain 1 0 0 0 0 100%
tests/test_main.py test_subtract_time_with_minus_key 16 0 0 0 0 100%
tests/test_main.py test_subtract_time_with_minus_key.fake_get_number_lines 2 0 0 0 0 100%
tests/test_main.py test_subtract_time_with_minus_key.fake_check_for_keypress 1 0 0 0 0 100%
tests/test_main.py test_subtract_time_with_minus_key.fake_read_key 1 0 0 0 0 100%
tests/test_main.py test_subtract_time_with_minus_key.fake_drain 1 0 0 0 0 100%
tests/test_main.py test_subtract_time_cannot_go_negative 17 0 0 0 0 100%
tests/test_main.py test_subtract_time_cannot_go_negative.fake_get_number_lines 2 0 0 0 0 100%
tests/test_main.py test_subtract_time_cannot_go_negative.fake_check_for_keypress 1 0 0 0 0 100%
tests/test_main.py test_subtract_time_cannot_go_negative.fake_read_key 1 0 0 0 0 100%
tests/test_main.py test_subtract_time_cannot_go_negative.fake_drain 1 0 0 0 0 100%
tests/test_main.py test_q_key_quits_timer 11 0 0 0 0 100%
tests/test_main.py test_q_key_quits_timer.fake_check_for_keypress 2 0 0 0 0 100%
tests/test_main.py test_q_key_quits_timer.fake_read_key 1 0 0 0 0 100%
tests/test_main.py test_no_arguments_shows_help 5 0 0 0 0 100%
tests/test_main.py (no function) 29 0 0 0 0 100%
tests/test_terminal.py test_check_for_keypress_returns_false_when_not_a_tty 6 0 0 0 0 100%
tests/test_terminal.py (no function) 3 0 0 0 0 100%
tests/test_timer.py join_lines 1 0 0 0 0 100%
tests/test_timer.py test_invalid_duration 2 0 0 0 0 100%
tests/test_timer.py test_duration_10_seconds 1 0 0 0 0 100%
tests/test_timer.py test_duration_60_seconds 1 0 0 0 0 100%
tests/test_timer.py test_duration_1_minute 1 0 0 0 0 100%
tests/test_timer.py test_duration_10_minutes 1 0 0 0 0 100%
tests/test_timer.py test_duration_25_minutes 1 0 0 0 0 100%
tests/test_timer.py test_duration_3_minute_and_30_seconds 1 0 0 0 0 100%
tests/test_timer.py test_duration_2_minutes_and_8_seconds 1 0 0 0 0 100%
tests/test_timer.py test_get_number_lines_10_seconds 2 0 0 0 0 100%
tests/test_timer.py test_get_number_lines_60_seconds 2 0 0 0 0 100%
tests/test_timer.py test_get_number_lines_45_minutes 2 0 0 0 0 100%
tests/test_timer.py test_get_number_lines_17_minutes_and_four_seconds 2 0 0 0 0 100%
tests/test_timer.py test_get_number_lines_8_minutes_and_6_seconds 2 0 0 0 0 100%
tests/test_timer.py test_get_number_lines_9_minutes 2 0 0 0 0 100%
tests/test_timer.py test_get_number_lines_3478 2 0 0 0 0 100%
tests/test_timer.py (no function) 20 0 0 0 0 100%
Total   620 0 84 68 0 100%

No items found using the specified filter.