| 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 |
43 |
0 |
0 |
18 |
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 |
_format_time_string |
3 |
0 |
0 |
0 |
0 |
100% |
| src/countdown/display.py |
get_required_width |
2 |
0 |
0 |
0 |
0 |
100% |
| src/countdown/display.py |
get_chars_for_terminal |
9 |
0 |
0 |
4 |
0 |
100% |
| src/countdown/display.py |
print_full_screen |
19 |
0 |
0 |
6 |
0 |
100% |
| src/countdown/display.py |
(no function) |
14 |
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 |
test_three_digit_minutes_force_smaller_chars |
5 |
0 |
0 |
0 |
0 |
100% |
| tests/test_display.py |
(no function) |
18 |
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 |
FakeClock.__init__ |
5 |
0 |
0 |
0 |
0 |
100% |
| tests/test_main.py |
FakeClock.elapsed |
1 |
0 |
0 |
0 |
0 |
100% |
| tests/test_main.py |
FakeClock.time |
1 |
0 |
0 |
0 |
0 |
100% |
| tests/test_main.py |
FakeClock.sleep |
5 |
0 |
0 |
4 |
0 |
100% |
| tests/test_main.py |
patch_clock |
2 |
0 |
0 |
0 |
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 |
8 |
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_600_clear_screens |
7 |
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 |
18 |
0 |
0 |
0 |
0 |
100% |
| tests/test_main.py |
test_sleep_exits_early_on_keypress.tracking_sleep |
4 |
0 |
0 |
2 |
0 |
100% |
| tests/test_main.py |
test_sleep_exits_early_on_keypress.fake_check_for_keypress |
1 |
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 |
26 |
0 |
0 |
0 |
0 |
100% |
| tests/test_main.py |
test_resume_from_pause_exits_early.tracking_sleep |
4 |
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 |
17 |
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 |
17 |
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 |
18 |
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 |
test_countdown_displays_each_second |
10 |
0 |
0 |
0 |
0 |
100% |
| tests/test_main.py |
test_countdown_displays_each_second.tracking_get_number_lines |
2 |
0 |
0 |
0 |
0 |
100% |
| tests/test_main.py |
test_drift_correction_with_slow_sleeps |
10 |
0 |
0 |
0 |
0 |
100% |
| tests/test_main.py |
test_drift_correction_with_slow_sleeps.tracking_get_number_lines |
2 |
0 |
0 |
0 |
0 |
100% |
| tests/test_main.py |
test_drift_correction_skips_seconds_when_very_slow |
12 |
0 |
0 |
2 |
0 |
100% |
| tests/test_main.py |
test_drift_correction_skips_seconds_when_very_slow.tracking_get_number_lines |
2 |
0 |
0 |
0 |
0 |
100% |
| tests/test_main.py |
test_pause_preserves_remaining_time |
20 |
0 |
0 |
0 |
0 |
100% |
| tests/test_main.py |
test_pause_preserves_remaining_time.tracking_get_number_lines |
2 |
0 |
0 |
0 |
0 |
100% |
| tests/test_main.py |
test_pause_preserves_remaining_time.fake_check_for_keypress |
2 |
0 |
0 |
0 |
0 |
100% |
| tests/test_main.py |
test_pause_preserves_remaining_time.fake_read_key |
1 |
0 |
0 |
0 |
0 |
100% |
| tests/test_main.py |
test_pause_preserves_remaining_time.fake_drain |
1 |
0 |
0 |
0 |
0 |
100% |
| tests/test_main.py |
test_add_time_extends_deadline |
19 |
0 |
0 |
0 |
0 |
100% |
| tests/test_main.py |
test_add_time_extends_deadline.tracking_get_number_lines |
2 |
0 |
0 |
0 |
0 |
100% |
| tests/test_main.py |
test_add_time_extends_deadline.fake_check_for_keypress |
1 |
0 |
0 |
0 |
0 |
100% |
| tests/test_main.py |
test_add_time_extends_deadline.fake_read_key |
1 |
0 |
0 |
0 |
0 |
100% |
| tests/test_main.py |
test_add_time_extends_deadline.fake_drain |
1 |
0 |
0 |
0 |
0 |
100% |
| tests/test_main.py |
test_subtract_time_shortens_deadline |
19 |
0 |
0 |
0 |
0 |
100% |
| tests/test_main.py |
test_subtract_time_shortens_deadline.tracking_get_number_lines |
2 |
0 |
0 |
0 |
0 |
100% |
| tests/test_main.py |
test_subtract_time_shortens_deadline.fake_check_for_keypress |
1 |
0 |
0 |
0 |
0 |
100% |
| tests/test_main.py |
test_subtract_time_shortens_deadline.fake_read_key |
1 |
0 |
0 |
0 |
0 |
100% |
| tests/test_main.py |
test_subtract_time_shortens_deadline.fake_drain |
1 |
0 |
0 |
0 |
0 |
100% |
| tests/test_main.py |
(no function) |
39 |
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_150_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_101_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) |
22 |
0 |
0 |
0 |
0 |
100% |