tests/test_add_old_archive_confirmation.py::test_confirm_add_old_archive_yes
tests/test_add_old_archive_confirmation.py::test_confirm_add_old_archive_no
tests/test_add_old_archive_confirmation.py::test_confirm_add_old_archive_timeout
tests/test_add_old_archive_confirmation.py::test_confirm_add_old_archive_keyboard_interrupt
tests/test_alternate_reference_archive.py::test_diff_extected_to_work
tests/test_alternate_reference_archive.py::test_diff_missing_alternate_reference_archive
tests/test_alternate_reference_archive.py::test_incr_missing_alternate_reference_archive
tests/test_autocompletion_install.py::test_install_autocompletion_first_time
tests/test_autocompletion_install.py::test_install_autocompletion_idempotent
tests/test_autocompletion_install.py::test_uninstall_autocompletion_removes_block
tests/test_binary_info.py::test_binary_path_exists_and_executable[dar]
tests/test_binary_info.py::test_binary_path_exists_and_executable[dar_manager]
tests/test_binary_info.py::test_binary_version_detected_and_valid[dar]
tests/test_binary_info.py::test_binary_version_detected_and_valid[dar_manager]
tests/test_binary_info.py::test_binary_info_not_found
tests/test_binary_info.py::test_binary_info_handles_run_exception
tests/test_bitrot.py::test_5_bitrot_recovery
tests/test_bitrot.py::test_25_bitrot_recovery
tests/test_clean_log.py::test_version
tests/test_clean_log.py::test_clean_log_removes_entries
tests/test_clean_log.py::test_clean_log_keeps_unrelated_entries
tests/test_clean_log.py::test_clean_log_keeps_non_info_pattern_lines
tests/test_clean_log.py::test_clean_log_empty_file
tests/test_clean_log.py::test_clean_log_multiple_files
tests/test_clean_log.py::test_clean_log_non_existent_file
tests/test_clean_log.py::test_clean_log_read_only_file
tests/test_clean_log.py::test_clean_log_dry_run_read_only_file
tests/test_clean_log.py::test_clean_log_corrupted_file
tests/test_clean_log.py::test_clean_log_dry_run
tests/test_clean_log.py::test_clean_log_uses_config_file_when_no_file_provided
tests/test_clean_log.py::test_clean_log_invalid_empty_filename
tests/test_clean_log.py::test_clean_log_missing_config_file
tests/test_clean_log.py::test_clean_log_rejects_path_traversal
tests/test_clean_log.py::test_clean_log_rejects_outside_log_dir
tests/test_clean_log.py::test_clean_log_file_missing_file
tests/test_clean_log.py::test_clean_log_file_no_read_permission
tests/test_clean_log.py::test_clean_log_rejects_non_pathlike
tests/test_clean_log.py::test_clean_log_file_handles_open_error
tests/test_cleanup.py::test_cleanup_functionality
tests/test_cleanup.py::test_cleanup_specific_archives
tests/test_cleanup.py::test_cleanup_multiple_specific_archives
tests/test_cleanup.py::test_cleanup_specific_archives_dry_run
tests/test_cleanup.py::test_cleanup_alternate_dir
tests/test_cleanup.py::test_confirmation_no_stops_deleting_full
tests/test_cleanup.py::test_confirmation_yes_deletes_full
tests/test_cleanup.py::test_logs_warning_when_no_matching_archives
tests/test_cleanup.py::test_age_based_cleanup_runs_when_no_specific_archives_given
tests/test_cleanup.py::test_missing_cleanup_specific_archives_argument
tests/test_cleanup.py::test_prereq_script_success
tests/test_cleanup.py::test_cleanup_confirmation_timeout
tests/test_cleanup.py::test_cleanup_confirmation_keyboard_interrupt
tests/test_cleanup.py::test_cleanup_confirmation_none_response
tests/test_cleanup.py::test_show_version_flag_exits
tests/test_cleanup.py::test_invalid_date_in_filename
tests/test_cleanup.py::test_delete_file_permission_error
tests/test_cleanup.py::test_cleanup_deletes_per_archive_par2_in_external_dir
tests/test_cleanup.py::test_delete_catalog_failure
tests/test_cleanup.py::test_invalid_backup_type
tests/test_cleanup.py::test_postreq_script_success
tests/test_cleanup.py::test_postreq_script_failure
tests/test_cleanup.py::test_cleanup_invalid_symlink
tests/test_cleanup.py::test_cleanup_alternate_dir_missing_exits
tests/test_cleanup.py::test_cleanup_alternate_dir_not_directory_exits
tests/test_cleanup.py::test_cleanup_specific_archives_rejects_unsafe_name
tests/test_cleanup.py::test_delete_old_backups_rejects_is_archive_name_allowed
tests/test_cleanup.py::test_delete_par2_files_skips_missing_dir
tests/test_cleanup.py::test_delete_par2_files_dry_run_does_not_delete
tests/test_cleanup.py::test_delete_old_backups_rejects_unsafe_archive
tests/test_cleanup.py::test_delete_catalog_handles_exception
tests/test_command_runner.py::test_command_runner_executes_successfully
tests/test_command_runner.py::test_logger_fallback_creates_loggers_and_files
tests/test_command_runner.py::test_logger_fallback_raises_on_filehandler_failure
tests/test_command_runner.py::test_logger_fallback_logger_names
tests/test_command_runner.py::test_logger_fallback_warns_to_stderr
tests/test_command_runner.py::test_command_runner_fallback_logger
tests/test_command_runner.py::test_command_runner_captures_all_outputs
tests/test_command_runner.py::test_command_runner_stacktrace_on_failure
tests/test_command_runner.py::test_command_runner_truncates_stdout_and_sets_note
tests/test_command_runner.py::test_command_runner_truncates_stderr_and_sets_note
tests/test_command_runner.py::test_command_runner_capture_output_zero_still_logs
tests/test_command_runner.py::test_command_runner_default_limit_zero_suppresses_stdout_and_stderr
tests/test_command_runner.py::test_command_runner_default_limit_captures_stdout_and_stderr
tests/test_command_runner.py::test_command_runner_default_limit_captures_when_log_output_false
tests/test_command_runner.py::test_command_runner_log_output_false_still_captures
tests/test_command_runner.py::test_command_runner_capture_output_false_still_logs
tests/test_command_runner.py::test_command_runner_negative_limit_unlimited
tests/test_command_runner.py::test_command_runner_truncates_stdout_and_stderr_sets_note
tests/test_command_runner.py::test_command_runner_uses_default_capture_limit
tests/test_command_runner.py::test_command_runner_unsafe_arg_returns_error
tests/test_command_runner.py::test_command_runner_log_output_false_logs_only_command_line
tests/test_command_runner.py::test_command_runner_check_true_nonzero_returns_stack
tests/test_command_runner.py::test_command_runner_text_false_returns_bytes
tests/test_command_runner.py::test_command_runner_binary_truncates_with_limit
tests/test_command_runner.py::test_command_runner_binary_log_output_false_captures
tests/test_command_runner.py::test_command_runner_binary_default_limit_truncates
tests/test_command_runner.py::test_command_runner_non_list_cmd_returns_error
tests/test_command_runner.py::test_command_runner_invalid_arg_type_returns_error
tests/test_command_runner.py::test_command_runner_timeout_returns_error
tests/test_command_runner.py::test_command_runner_negative_timeout_disables_timeout
tests/test_command_runner.py::test_command_runner_popen_failure_returns_error
tests/test_command_runner.py::test_command_runner_capture_and_log_output_disabled
tests/test_command_runner.py::test_command_runner_cwd_and_stdin_passed
tests/test_command_runner.py::test_command_runner_text_false_does_not_log_binary
tests/test_command_runner.py::test_command_runner_sanitize_failure_note_includes_command
tests/test_command_runner.py::test_command_runner_non_list_cmd_note_includes_command
tests/test_command_runner.py::test_command_runner_restores_tty_attrs
tests/test_command_runner.py::test_command_runner_termios_none_skips_tty
tests/test_command_runner.py::test_command_runner_tty_open_failure_does_not_crash
tests/test_command_runner.py::test_command_runner_wait_exception_returns_error
tests/test_command_runner.py::test_command_result_str_handles_binary
tests/test_config_comments.py::test_config_inline_comments
tests/test_config_settings.py::test_config_settings_missing_file_raises
tests/test_config_settings.py::test_config_settings_invalid_par2_enabled_value_raises
tests/test_config_settings.py::test_config_settings_optional_bool_invalid_raises
tests/test_config_settings.py::test_config_settings_optional_regex_invalid_raises
tests/test_config_settings.py::test_config_settings_optional_csv_list_parses
tests/test_config_settings.py::test_config_settings_optional_regex_compiles_case_insensitive
tests/test_config_settings.py::test_config_settings_expands_paths_and_defaults
tests/test_config_settings.py::test_get_par2_config_overrides_run_verify_and_enabled
tests/test_config_settings.py::test_get_par2_config_invalid_run_verify_value_raises
tests/test_config_settings.py::test_config_settings_repr_omits_none_fields
tests/test_config_settings.py::test_config_settings_invalid_optional_ints_raise[MISC-COMMAND_CAPTURE_MAX_BYTES-not-an-int]
tests/test_config_settings.py::test_config_settings_invalid_optional_ints_raise[MISC-LOGFILE_MAX_BYTES-not-an-int]
tests/test_config_settings.py::test_config_settings_invalid_optional_ints_raise[MISC-LOGFILE_BACKUP_COUNT-not-an-int]
tests/test_config_settings.py::test_config_settings_invalid_optional_ints_raise[PAR2-PAR2_RATIO_FULL-not-an-int]
tests/test_create_backup_command.py::test_create_backup_command_minimal_structure[FULL-False]
tests/test_create_backup_command.py::test_create_backup_command_minimal_structure[DIFF-True]
tests/test_create_backup_command.py::test_create_backup_command_minimal_structure[INCR-True]
tests/test_create_full_diff_incr_backup.py::test_backup_functionality
tests/test_create_full_diff_incr_backup.py::test_backup_functionality_short_options
tests/test_create_full_diff_incr_backup.py::test_backup_with_missing_config_file
tests/test_create_full_diff_incr_backup.py::test_backup_with_malformed_config_file
tests/test_create_full_diff_incr_backup.py::test_config_with_invalid_timeout_value
tests/test_create_full_diff_incr_backup.py::test_config_with_invalid_boolean_value
tests/test_create_full_diff_incr_backup.py::test_config_with_invalid_integer_value
tests/test_create_full_diff_incr_backup.py::test_config_missing_age_section
tests/test_create_full_diff_incr_backup.py::test_config_missing_diff_age_key
tests/test_create_full_diff_incr_backup.py::test_config_missing_incr_age
tests/test_dar_backup.py::test_verify_filecmp_mismatch_returns_false
tests/test_dar_backup.py::test_verify_filecmp_permission_error_logged
tests/test_dar_backup.py::test_verify_missing_source_file_logs_warning
tests/test_dar_backup.py::test_verify_do_not_compare_skips_verification
tests/test_dar_backup.py::test_verify_success_path_with_verbose_logging
tests/test_dar_backup.py::test_perform_backup_skips_definition_with_underscore_in_args
tests/test_dar_backup.py::test_perform_backup_skips_files_with_underscore_in_directory
tests/test_dar_backup.py::test_perform_backup_skips_diff_when_no_base_backup
tests/test_dar_backup.py::test_perform_backup_handles_failed_verification
tests/test_dar_backup.py::test_perform_backup_runs_par2_after_verify
tests/test_dar_backup.py::test_perform_backup_sends_warning_for_existing_backup
tests/test_dar_backup.py::test_perform_backup_handles_exception_during_processing
tests/test_dar_backup.py::test_list_contents_with_selection_parses_and_extends_command
tests/test_dar_backup.py::test_list_contents_handles_nonzero_returncode
tests/test_dar_backup.py::test_list_contents_raises_backup_error_on_called_process_error
tests/test_dar_backup.py::test_list_contents_raises_runtime_error_on_generic_exception
tests/test_dar_backup.py::test_restore_backup_process_fails
tests/test_dar_backup.py::test_restore_backup_calledprocesserror
tests/test_dar_backup.py::test_restore_backup_oserror
tests/test_dar_backup.py::test_generic_backup_warns_on_returncode_5
tests/test_dar_backup.py::test_catalog_add_failure_handled
tests/test_dar_backup.py::test_verify_raises_error_if_no_root_path
tests/test_dar_backup.py::test_restore_backup_raises_if_restore_dir_none
tests/test_dar_backup.py::test_main_fails_when_definition_file_missing
tests/test_dar_backup.py::test_main_defensive_check_invalid_result_format
tests/test_dar_backup.py::test_test_restore_cli
tests/test_dar_backup.py::test_find_files_within_min_max_range
tests/test_dar_backup.py::test_filter_restoretest_candidates_case_insensitive
tests/test_dar_backup.py::test_restoretest_filters_and_verifies_all_good_files
tests/test_dar_backup.py::test_generic_backup_runner_exception_raises[FULL]
tests/test_dar_backup.py::test_generic_backup_runner_exception_raises[DIFF]
tests/test_dar_backup.py::test_generic_backup_runner_exception_raises[INCR]
tests/test_dar_backup.py::test_generic_backup_calledprocesserror_wrapped[FULL]
tests/test_dar_backup.py::test_generic_backup_calledprocesserror_wrapped[DIFF]
tests/test_dar_backup.py::test_generic_backup_calledprocesserror_wrapped[INCR]
tests/test_dar_backup.py::test_restore_backup_selection_and_darrc[--selections some/file.txt --selections "dir with spaces/"-expect_tokens0]
tests/test_dar_backup.py::test_restore_backup_selection_and_darrc[None-expect_tokens1]
tests/test_dar_backup.py::test_print_markdown_missing_file_exits
tests/test_dar_backup.py::test_get_backed_up_files_error_mapping[side_effect0-BackupError-Error listing backed up files]
tests/test_dar_backup.py::test_get_backed_up_files_error_mapping[side_effect1-RuntimeError-Unexpected error listing backed up files.*dummy_backup]
tests/test_dar_backup.py::test_get_backed_up_files_success_parses_xml
tests/test_dar_backup.py::test_generate_par2_files_success_invokes_par2
tests/test_dar_backup.py::test_generate_par2_files_failure_raises_calledprocesserror
tests/test_dar_backup.py::test_print_markdown_from_string_pretty_false
tests/test_dar_backup.py::test_print_markdown_pretty_falls_back_when_rich_missing
tests/test_dar_backup.py::test_select_restoretest_samples_returns_empty_when_sample_size_zero
tests/test_dar_backup.py::test_select_restoretest_samples_ignores_invalid_sizes
tests/test_dar_backup.py::test_select_restoretest_samples_reservoir_sampling_limits_size
tests/test_dar_backup.py::test_verify_skips_when_no_eligible_files_logs_info
tests/test_dar_backup.py::test_get_backed_up_files_nonzero_returncode_raises_runtime_error
tests/test_dar_backup.py::test_get_backed_up_files_timeout_raises_backup_error
tests/test_dar_backup.py::test_list_dar_slices_orders_numerically
tests/test_dar_backup.py::test_validate_slice_sequence_missing_slice_raises
tests/test_dar_backup.py::test_get_backup_type_from_archive_base_invalid_format_raises
tests/test_dar_backup.py::test_get_par2_ratio_prefers_specific_ratio
tests/test_dar_backup_additional_coverage.py::test_iter_files_with_paths_from_xml_streams_paths
tests/test_dar_backup_additional_coverage.py::test_filter_restoretest_candidates_logs_excluded
tests/test_dar_backup_additional_coverage.py::test_select_restoretest_samples_logs_summary
tests/test_dar_backup_additional_coverage.py::test_create_backup_command_requires_base_for_diff
tests/test_dar_backup_additional_coverage.py::test_validate_required_directories_missing
tests/test_dar_backup_additional_coverage.py::test_list_definitions_requires_dir
tests/test_dar_backup_additional_coverage.py::test_preflight_reports_missing_paths_and_permissions
tests/test_dar_backup_additional_coverage.py::test_preflight_reports_missing_binaries
tests/test_dar_backup_additional_coverage.py::test_preflight_reports_version_failures
tests/test_dar_backup_additional_coverage.py::test_verify_runner_exception_propagates
tests/test_dar_backup_additional_coverage.py::test_verify_restore_dir_create_error
tests/test_dar_backup_additional_coverage.py::test_verify_restore_command_nonzero_raises
tests/test_dar_backup_additional_coverage.py::test_get_backed_up_files_subprocess_success
tests/test_dar_backup_additional_coverage.py::test_get_backed_up_files_subprocess_remove_warns
tests/test_dar_backup_additional_coverage.py::test_list_contents_subprocess_success
tests/test_dar_backup_additional_coverage.py::test_list_contents_subprocess_error
tests/test_dar_backup_additional_coverage.py::test_perform_backup_alternate_reference_missing
tests/test_dar_backup_additional_coverage.py::test_validate_slice_sequence_empty_list
tests/test_dar_backup_additional_coverage.py::test_get_par2_ratio_incr_override
tests/test_dar_backup_additional_coverage.py::test_generate_par2_files_par2_disabled
tests/test_dar_backup_additional_coverage.py::test_generate_par2_files_verify_failure
tests/test_dar_backup_additional_coverage.py::test_filter_darrc_file_cleanup_on_error
tests/test_dar_backup_additional_coverage.py::test_show_examples_prints_output
tests/test_dar_backup_startup.py::test_dar_backup_unreadable_config_exits_127
tests/test_dar_backup_startup.py::test_dar_backup_warns_on_bad_logfile_location
tests/test_darrc.py::test_verify_filtering
tests/test_darrc.py::test_backup_with_filtered_darrc
tests/test_demo.py::test_demo_help_no_args
tests/test_demo.py::test_demo_generate_calls_generate_file
tests/test_demo.py::test_demo_generate_with_overrides
tests/test_demo.py::test_demo_install_ok
tests/test_demo.py::test_demo_install_existing_no_override
tests/test_demo.py::test_demo_install_override_allows_existing
tests/test_demo.py::test_demo_bad_flag
tests/test_demo.py::test_demo_requires_grouped_options
tests/test_demo.py::test_setup_dicts_updates_vars
tests/test_demo.py::test_generate_file_writes_and_respects_override
tests/test_demo.py::test_generate_file_rejects_directory_output
tests/test_demo.py::test_generate_file_render_failure
tests/test_demo.py::test_check_directories_rejects_file
tests/test_discord_webhook.py::test_send_discord_message_prefers_env_over_config
tests/test_discord_webhook.py::test_send_discord_message_uses_env_when_no_config
tests/test_doctype_handler.py::test_doctype_handler_assignment
tests/test_filter_darrc_file.py::test_filter_darrc_file_removes_verbose_flags
tests/test_generic_backup_command_execution.py::test_generic_backup_success
tests/test_get_config_file.py::test_get_config_file_defaults_to_user_config
tests/test_get_config_file.py::test_get_config_file_uses_env_override
tests/test_get_config_file.py::test_get_config_file_cli_wins_over_env
tests/test_get_config_file.py::test_get_config_file_missing_config_file_attr_uses_default
tests/test_get_config_file.py::test_get_config_file_env_none_uses_default
tests/test_get_config_file.py::test_get_config_file_ignores_whitespace_env
tests/test_get_config_file.py::test_get_config_file_whitespace_cli_uses_env
tests/test_gpt_file_compression.py::test_dar_backup_compression_exclusion
tests/test_gpt_tests.py::test_restore_functionality
tests/test_gpt_tests.py::test_invalid_backup_handling
tests/test_gpt_tests.py::test_backup_with_large_files
tests/test_gpt_tests.py::test_par2_repair_bit_rot
tests/test_gpt_tests.py::test_par2_insufficient_redundancy
tests/test_gpt_tests.py::test_extreme_restore_failure
tests/test_gpt_tests.py::test_metadata_corruption_failure
tests/test_installer.py::test_run_installer_creates_required_dirs
tests/test_installer.py::test_run_installer_with_create_db_prints_results
tests/test_installer.py::test_run_installer_blocks_unsafe_path
tests/test_installer.py::test_installer_main_missing_config_prints_and_returns
tests/test_installer.py::test_installer_main_calls_run_installer
tests/test_installer.py::test_installer_main_install_autocompletion
tests/test_installer.py::test_installer_main_remove_autocompletion
tests/test_installer.py::test_install_autocompletion_appends_and_is_idempotent
tests/test_installer.py::test_install_autocompletion_uses_bash_profile
tests/test_installer.py::test_install_autocompletion_uses_zsh
tests/test_installer.py::test_uninstall_autocompletion_removes_block
tests/test_installer.py::test_uninstall_autocompletion_no_marker
tests/test_installer.py::test_install_autocompletion_rc_is_dir
tests/test_installer.py::test_uninstall_autocompletion_missing_rc
tests/test_installer.py::test_uninstall_autocompletion_rc_is_dir
tests/test_installer.py::test_uninstall_autocompletion_end_marker_missing
tests/test_installer.py::test_installer_creates_catalog[False]
tests/test_installer.py::test_installer_creates_catalog[True]
tests/test_iterparse_gen.py::test_doctype_stripper
tests/test_links.py::test_backup_with_broken_symlink
tests/test_list_definitions.py::test_list_definitions_outputs_backup_d_entries
tests/test_listing.py::test_list_dar_archives
tests/test_listing.py::test_list_dar_archives_short_options
tests/test_listing.py::test_list_contents_unicode_filenames
tests/test_logging_trace.py::test_dual_logging_trace_suppression
tests/test_logging_trace.py::test_dual_logging_debug_level
tests/test_manager.py::test_manager_command_capture_max_bytes_zero
tests/test_manager.py::test_manager_command_capture_max_bytes_1k_captures_stdout_stderr
tests/test_manager.py::test_manager_create_dbs
tests/test_manager.py::test_manager_version
tests/test_manager.py::test_manager_help
tests/test_manager.py::test_list_catalog
tests/test_manager.py::test_list_catalog_short_option
tests/test_manager.py::test_find_file
tests/test_manager.py::test_remove_specific_archive
tests/test_manager.py::test_list_archive_contents
tests/test_manager.py::test_add_directory_to_catalog_db
tests/test_manager.py::test_add_empty_directory_to_catalog_db
tests/test_manager.py::test_add_archive_to_catalog_db
tests/test_manager.py::test_manager_more_help
tests/test_manager.py::test_manager_add_specific_archive_empty
tests/test_manager.py::test_manager_add_and_remove_specific_archive
tests/test_manager.py::test_manager_with_alternate_archive_dir
tests/test_manager.py::test_create_db_handles_dar_manager_failure
tests/test_manager.py::test_list_catalogs_db_missing
tests/test_manager.py::test_list_catalogs_command_failure
tests/test_manager.py::test_cat_no_for_name_list_catalogs_fails
tests/test_manager.py::test_list_archive_contents_runner_fails
tests/test_manager.py::test_list_archive_contents_cat_not_found
tests/test_manager.py::test_list_archive_contents_runner_fails_isolated
tests/test_manager.py::test_find_file_db_missing
tests/test_manager.py::test_add_specific_archive_dar_not_found
tests/test_manager.py::test_add_specific_archive_success
tests/test_manager.py::test_add_specific_archive_warning
tests/test_manager.py::test_add_specific_archive_failure
tests/test_manager.py::test_add_specific_archive_unexpected_error
tests/test_manager.py::test_list_archive_contents_arg
tests/test_manager.py::test_manager_sanity_checks_exit[cli_args0-archive dir not given]
tests/test_manager.py::test_manager_sanity_checks_exit[cli_args1-specific archive to add not given]
tests/test_manager.py::test_manager_sanity_checks_exit[cli_args2-specific archive to remove not given]
tests/test_manager.py::test_manager_sanity_checks_exit[cli_args3-you can't add and remove archives]
tests/test_manager.py::test_manager_sanity_checks_exit[cli_args4-you cannot add both a directory and an archive]
tests/test_manager.py::test_manager_sanity_checks_exit[cli_args5-No backup definition given]
tests/test_manager.py::test_manager_sanity_checks_exit[cli_args6-does not exist]
tests/test_manager.py::test_manager_sanity_checks_exit[cli_args7---list-archive-contents <param> not given]
tests/test_manager.py::test_manager_sanity_checks_exit[cli_args8---find-file requires the --backup-def]
tests/test_manager.py::test_manager_sanity_checks_exit[cli_args9-Alternate archive dir '/nonexistent' does not exist]
tests/test_manager.py::test_catalog_file_not_found
tests/test_manager.py::test_catalog_command_success
tests/test_manager.py::test_catalog_command_failure
tests/test_manager.py::test_manager_db_dir_respected_by_dar_backup
tests/test_manager.py::test_manager_db_dir_invalid_path_raises
tests/test_manager.py::test_backup_def_from_archive_no_match_logs_error
tests/test_manager.py::test_list_archive_contents_subprocess_empty_prints_info
tests/test_manager.py::test_list_archive_contents_subprocess_filters_saved_lines
tests/test_manager.py::test_add_specific_archive_missing_backup_def
tests/test_manager.py::test_add_specific_archive_old_archive_declined
tests/test_manager.py::test_add_specific_archive_catalog_list_failure_logs_warning
tests/test_manager.py::test_add_directory_no_archives_logs_info
tests/test_manager.py::test_add_directory_missing_dir_raises
tests/test_manager.py::test_add_directory_sorts_by_date_then_type
tests/test_manager.py::test_remove_specific_archive_failure_returns_one
tests/test_manager.py::test_create_db_db_dir_missing
tests/test_manager.py::test_create_db_db_dir_not_directory
tests/test_manager.py::test_create_db_db_dir_not_writable
tests/test_manager.py::test_list_catalogs_success_runner_parses_and_sorts
tests/test_manager.py::test_list_catalogs_success_subprocess_parses
tests/test_manager.py::test_get_db_dir_prefers_manager_db_dir
tests/test_manager.py::test_manager_db_dir_invalid_path_without_backup_def
tests/test_manager.py::test_manager_creates_all_catalogs
tests/test_manager.py::test_manager_skips_existing_catalogs
tests/test_manager_coverage.py::test_open_command_log_returns_none_without_handler
tests/test_manager_coverage.py::test_open_command_log_writes_header
tests/test_manager_coverage.py::test_list_catalogs_runner_ignores_short_lines_and_handles_no_date
tests/test_manager_coverage.py::test_list_catalogs_subprocess_non_int_cap_and_no_stderr
tests/test_manager_coverage.py::test_list_catalogs_subprocess_truncates_stderr_and_logs
tests/test_manager_coverage.py::test_list_catalogs_subprocess_error_with_stderr_text
tests/test_manager_coverage.py::test_list_archive_contents_db_missing
tests/test_manager_coverage.py::test_list_archive_contents_runner_prints_saved_lines
tests/test_manager_coverage.py::test_list_archive_contents_runner_prints_empty_info
tests/test_manager_coverage.py::test_list_archive_contents_subprocess_stderr_none
tests/test_manager_coverage.py::test_list_archive_contents_subprocess_truncates_stderr_and_skips_stdout
tests/test_manager_coverage.py::test_list_archive_contents_subprocess_error_with_stderr_text
tests/test_manager_coverage.py::test_list_archive_contents_subprocess_timeout
tests/test_manager_coverage.py::test_add_specific_archive_old_archive_confirmed
tests/test_manager_coverage.py::test_add_specific_archive_without_date_skips_prompt
tests/test_manager_coverage.py::test_add_directory_logs_error_on_failure
tests/test_manager_coverage.py::test_confirm_add_old_archive_returns_false_on_none
tests/test_manager_coverage.py::test_manager_main_python_version_too_low
tests/test_manager_coverage.py::test_manager_main_config_missing
tests/test_manager_coverage.py::test_manager_main_logfile_dir_missing
tests/test_manager_coverage.py::test_manager_main_sanity_returns[args0]
tests/test_manager_coverage.py::test_manager_main_sanity_returns[args1]
tests/test_manager_coverage.py::test_manager_main_sanity_returns[args2]
tests/test_manager_coverage.py::test_manager_main_sanity_returns[args3]
tests/test_manager_coverage.py::test_manager_main_sanity_returns[args4]
tests/test_manager_coverage.py::test_manager_main_sanity_returns[args5]
tests/test_manager_coverage.py::test_manager_main_sanity_returns[args6]
tests/test_manager_coverage.py::test_manager_main_sanity_returns[args7]
tests/test_manager_coverage.py::test_manager_main_create_db_returns
tests/test_manager_coverage.py::test_manager_main_add_specific_archive_returns
tests/test_manager_coverage.py::test_manager_main_add_dir_returns
tests/test_manager_coverage.py::test_manager_main_list_catalogs_returns
tests/test_manager_coverage.py::test_manager_main_list_archive_contents_returns
tests/test_manager_coverage.py::test_manager_main_find_file_returns
tests/test_par2.py::test_ordered_by_slicenumber
tests/test_par2_manifest.py::test_par2_dir_manifest_and_repair
tests/test_par2_multi_definitions.py::test_par2_multi_definition_repair_flow
tests/test_par2_overrides.py::test_par2_overrides_are_applied
tests/test_pitr.py::test_restore_at_basic_success
tests/test_pitr.py::test_restore_at_timezone_aware_when_normalized
tests/test_pitr.py::test_restore_at_invalid_date
tests/test_pitr.py::test_restore_at_no_db
tests/test_pitr.py::test_restore_at_target_creation_fail
tests/test_pitr.py::test_restore_at_returns_restore_with_dar_code
tests/test_pitr.py::test_restore_at_existing_target_paths_abort
tests/test_pitr.py::test_restore_at_empty_target_allows_restore
tests/test_pitr.py::test_restore_at_multiple_paths_and_no_target
tests/test_pitr.py::test_cli_restore_path_requires_backup_def
tests/test_pitr.py::test_cli_restore_path_requires_target
tests/test_pitr.py::test_cli_pitr_report_does_not_require_target
tests/test_pitr.py::test_cli_pitr_report_first_runs_and_aborts_on_failure
tests/test_pitr.py::test_cli_pitr_report_first_runs_and_restores_on_success
tests/test_pitr.py::test_cli_pitr_report_first_requires_restore_path
tests/test_pitr.py::test_restore_at_uses_direct_dar_restore
tests/test_pitr.py::test_restore_at_default_when_uses_now
tests/test_pitr.py::test_restore_with_dar_logs_candidates_and_summary
tests/test_pitr.py::test_restore_with_dar_directory_logs_chain_details
tests/test_pitr.py::test_pitr_report_directory_missing_slice_fails
tests/test_pitr.py::test_pitr_report_requires_when
tests/test_pitr.py::test_pitr_report_invalid_date
tests/test_pitr.py::test_pitr_report_empty_archive_map
tests/test_pitr.py::test_pitr_report_file_missing_archive_map_entry
tests/test_pitr.py::test_pitr_report_file_missing_slice
tests/test_pitr.py::test_pitr_report_directory_no_full_archive
tests/test_pitr.py::test_pitr_report_directory_missing_archive_map_entry
tests/test_pitr.py::test_pitr_report_directory_heuristic_triggers_chain
tests/test_pitr.py::test_restore_with_dar_directory_missing_chain_fails
tests/test_pitr.py::test_restore_with_dar_directory_no_full_archive
tests/test_pitr.py::test_restore_with_dar_directory_missing_archive_map_entry
tests/test_pitr.py::test_restore_with_dar_directory_heuristic_triggers_chain
tests/test_pitr.py::test_restore_with_dar_directory_no_extension_nonexistent_local_path_uses_chain
tests/test_pitr.py::test_restore_at_rejects_protected_target
tests/test_pitr.py::test_cli_restore_execution
tests/test_pitr.py::test_cli_relocate_requires_backup_def
tests/test_pitr.py::test_cli_relocate_dry_run_executes
tests/test_pitr.py::test_cli_relocate_dry_run_requires_relocate
tests/test_pitr.py::test_relocate_archive_paths_dry_run
tests/test_pitr.py::test_relocate_archive_paths_apply
tests/test_pitr.py::test_relocate_archive_paths_no_matches
tests/test_pitr.py::test_relocate_archive_paths_list_failure
tests/test_pitr.py::test_relocate_archive_paths_update_failure
tests/test_pitr.py::test_restore_with_dar_empty_archive_map
tests/test_pitr.py::test_restore_with_dar_file_missing_archive_map_entry
tests/test_pitr.py::test_restore_with_dar_file_missing_slice
tests/test_pitr.py::test_restore_with_dar_file_restore_failure
tests/test_pitr_integration.py::test_pitr_integration_flow
tests/test_pitr_integration.py::test_pitr_integration_tree_structure
tests/test_pitr_integration.py::test_pitr_integration_torture_chain
tests/test_pitr_integration.py::test_pitr_integration_rename_mtime_torture
tests/test_pitr_integration.py::test_pitr_rebuild_catalog_after_loss
tests/test_postreq.py::test_postreq
tests/test_preflight.py::test_preflight_passes_when_env_is_valid
tests/test_preflight.py::test_preflight_fails_when_backup_definition_missing
tests/test_preflight.py::test_preflight_fails_when_directories_missing
tests/test_prereq.py::test_prereq
tests/test_readme_changelog.py::test_help_options_success[--readme]
tests/test_readme_changelog.py::test_help_options_success[--readme-pretty]
tests/test_readme_changelog.py::test_help_options_success[--changelog]
tests/test_readme_changelog.py::test_help_options_success[--changelog-pretty]
tests/test_readme_changelog.py::test_readme_missing[--readme]
tests/test_readme_changelog.py::test_readme_missing[--readme-pretty]
tests/test_readme_changelog.py::test_changelog_missing[--changelog]
tests/test_readme_changelog.py::test_changelog_missing[--changelog-pretty]
tests/test_readme_changelog.py::test_plain_output_contains_headers[--readme]
tests/test_readme_changelog.py::test_plain_output_contains_headers[--changelog]
tests/test_restore.py::test_restoredir_requires_value
tests/test_restore.py::test_restore_requires_value
tests/test_restore.py::test_restore_with_restoredir
tests/test_restore.py::test_restore_validatation
tests/test_run_command.py::test_stdout_1MB
tests/test_run_command.py::test_command_not_found
tests/test_run_command.py::test_check_flag_logs_error
tests/test_run_command.py::test_capture_output_false
tests/test_run_command.py::test_logger_fallback
tests/test_run_command.py::test_timeout_handling
tests/test_run_command.py::test_binary_output_mode
tests/test_sanity_checks.py::test_env_vars_in_config_file
tests/test_sanity_checks.py::test_tilde_in_config_file
tests/test_sanity_checks.py::test_clean_log_missing_logfile_location_key
tests/test_sanity_checks.py::test_clean_log_invalid_backup_dir_path
tests/test_sanity_checks.py::test_clean_log_missing_directories_section
tests/test_sanity_checks.py::test_config_parsing_missing_misc_section
tests/test_sanity_checks.py::test_dar_backup_definition_with_underscore
tests/test_sanity_checks.py::test_dar_backup_nonexistent_definition_
tests/test_sanity_checks.py::test_dar_backup_nonexistent_config_file
tests/test_sanity_checks.py::test_skip_cache_directories
tests/test_sanity_checks.py::test_validate_xml_parser
tests/test_sanity_checks.py::test_duplicate_full_backup_fails
tests/test_sanity_checks.py::test_script_shows_version[dar_backup.py-src/dar_backup/dar_backup.py]
tests/test_sanity_checks.py::test_script_shows_version[manager.py-src/dar_backup/manager.py]
tests/test_sanity_checks.py::test_script_shows_version[cleanup.py-src/dar_backup/cleanup.py]
tests/test_sanity_checks.py::test_print_aligned_settings_trimming_and_logging
tests/test_sanity_checks.py::test_logfile_rotation_and_content_integrity
tests/test_space_definition.py::test_backup_definition_with_space
tests/test_startup_cleanup.py::test_clean_restore_test_directory_removes_files
tests/test_startup_cleanup.py::test_clean_restore_test_directory_skips_critical_paths
tests/test_startup_cleanup.py::test_clean_restore_test_directory_skips_home
tests/test_startup_cleanup.py::test_clean_restore_test_directory_skips_symlinked_critical_path
tests/test_startup_cleanup.py::test_clean_restore_test_directory_allows_subdirectory_of_critical
tests/test_startup_cleanup.py::test_clean_restore_test_directory_handles_errors
tests/test_startup_cleanup.py::test_main_calls_clean_restore_test_directory
tests/test_status_indicators.py::test_show_log_driven_bar_updates_progress
tests/test_status_indicators.py::test_is_terminal_uses_console_flag
tests/test_status_indicators.py::test_get_green_shade_bounds
tests/test_status_indicators.py::test_show_log_driven_bar_skips_when_not_terminal
tests/test_status_indicators.py::test_tail_log_file_yields_after_marker
tests/test_status_indicators.py::test_tail_log_file_missing_path_stops
tests/test_status_indicators.py::test_tail_log_file_logs_read_error
tests/test_stress.py::test_backup_with_many_small_files
tests/test_systemd_unit_generation.py::TestDarBackupUnitGenerator::test_build_exec_command_with_dar
tests/test_systemd_unit_generation.py::TestDarBackupUnitGenerator::test_build_exec_command_without_dar
tests/test_systemd_unit_generation.py::TestDarBackupUnitGenerator::test_generate_cleanup_service
tests/test_systemd_unit_generation.py::TestDarBackupUnitGenerator::test_generate_service
tests/test_systemd_unit_generation.py::TestDarBackupUnitGenerator::test_generate_timer
tests/test_systemd_unit_generation.py::TestDarBackupUnitGenerator::test_write_unit_file
tests/test_systemd_unit_generation.py::test_write_unit_files_triggers_enable_and_start
tests/test_systemd_unit_generation.py::test_enable_and_start_unit_runs_systemctl
tests/test_systemd_unit_generation.py::test_write_unit_files_no_install_writes_to_cwd
tests/test_systemd_unit_generation.py::test_main_passes_args_to_write_unit_files
tests/test_trace_logging.py::test_trace_logging_captures_all_levels_and_commands
tests/test_trace_logging.py::test_trace_log_rotation
tests/test_util.py::test_setup_logging_creates_file_and_logger
tests/test_util.py::test_setup_logging_stdout_and_file
tests/test_util.py::test_setup_logging_exits_on_handler_failure
tests/test_util.py::test_list_backups_ignores_files
tests/test_util.py::test_get_invocation_command_line_positive
tests/test_util.py::test_get_invocation_command_line_negative
tests/test_util.py::test_get_invocation_command_line_empty
tests/test_util.py::test_default_completer_logfile_without_getuid
tests/test_util.py::test_setup_completer_logger_fallbacks_to_nullhandler
tests/test_util.py::test_is_under_base_dir_positive
tests/test_util.py::test_is_under_base_dir_outside
tests/test_util.py::test_is_under_base_dir_symlink_escape
tests/test_util.py::test_safe_remove_file_deletes_valid
tests/test_util.py::test_safe_remove_file_refuses_outside_base
tests/test_util.py::test_safe_remove_file_refuses_bad_name
tests/test_util.py::test_safe_remove_file_refuses_symlink
tests/test_util.py::test_safe_remove_file_refuses_non_file
tests/test_util.py::test_is_archive_name_allowed_positive
tests/test_util.py::test_is_archive_name_allowed_negative
tests/test_util.py::test_is_under_base_dir_nested_positive
tests/test_util.py::test_is_archive_name_allowed_rejects_separators
tests/test_util.py::test_extract_backup_definition_fallback_dash_d
tests/test_util.py::test_extract_backup_definition_fallback_long_flag
tests/test_util.py::test_extract_backup_definition_fallback_equals
tests/test_util.py::test_split_archive_list_prefix_empty
tests/test_util.py::test_split_archive_list_prefix_single
tests/test_util.py::test_split_archive_list_prefix_strips_spaces
tests/test_util.py::test_list_archive_completer_handles_list_with_spaces
tests/test_util.py::test_list_archive_completer_cleanup_without_specific_archives
tests/test_util.py::test_send_discord_message_returns_false_without_webhook
tests/test_util.py::test_send_discord_message_http_error_logs_and_returns_false
tests/test_util.py::test_send_discord_message_unexpected_error_logs_and_returns_false
tests/test_util.py::test_add_specific_archive_completer_filters_existing_db_entries
tests/test_util.py::test_list_backups_no_backups
tests/test_util.py::test_is_safe_path_requires_absolute
tests/test_util.py::test_print_debug_includes_filename_and_repr
tests/test_util.py::test_show_scriptname_uses_sys_argv
tests/test_util.py::test_show_scriptname_returns_unknown_on_error
tests/test_util.py::test_patch_config_file_replaces_only_matching_keys
tests/test_util.py::test_normalize_dir_strips_trailing_separator
tests/test_util.py::test_requirements_uses_popen_path_success
tests/test_util.py::test_requirements_uses_popen_path_failure
tests/test_util_completers.py::test_expand_path
tests/test_util_completers.py::test_default_completer_logfile_includes_uid
tests/test_util_completers.py::test_setup_completer_logger_failure_does_not_raise
tests/test_util_completers.py::test_backup_definition_completer
tests/test_util_completers.py::test_list_archive_completer_with_definition
tests/test_util_completers.py::test_list_archive_completer_all_archives
tests/test_util_completers.py::test_archive_content_completer_with_mocked_db
tests/test_util_completers.py::test_archive_content_completer_global_prefix_match
tests/test_util_completers.py::test_archive_content_completer_sorting
tests/test_util_completers.py::test_add_specific_archive_completer_full_coverage
tests/test_verbose.py::test_verbose
tests/test_verbose.py::test_verbose_cleanup
tests/test_verbose.py::test_verbose_error_reporting
tests/test_verify_cleanup.py::test_verify_removes_existing_file_before_restore
tests/test_xxe.py::test_xxe_default_parser
tests/test_xxe.py::test_xxe_parser_entity_disabled

563/564 tests collected (1 deselected) in 0.11s
