Coverage report: 99%

Files Functions Classes

coverage.py v7.13.5, created at 2026-03-21 14:31 +0000

File function   statements missing excluded   coverage
crowdsourcing / __init__.py (no function)   1 0 0   100%
crowdsourcing / archive_manager.py ArchiveManager.__init__   7 0 0   100%
crowdsourcing / archive_manager.py ArchiveManager._load_config   2 0 0   100%
crowdsourcing / archive_manager.py ArchiveManager._init_index   3 0 0   100%
crowdsourcing / archive_manager.py ArchiveManager._load_index   2 0 0   100%
crowdsourcing / archive_manager.py ArchiveManager._save_index   2 0 0   100%
crowdsourcing / archive_manager.py ArchiveManager.add_report   6 0 0   100%
crowdsourcing / archive_manager.py ArchiveManager.archive_reports   44 0 0   100%
crowdsourcing / archive_manager.py ArchiveManager.get_report_url   7 0 0   100%
crowdsourcing / archive_manager.py ArchiveManager.needs_archival   2 0 0   100%
crowdsourcing / archive_manager.py (no function)   21 0 0   100%
crowdsourcing / archive_reports.py check_and_archive_reports   11 0 0   100%
crowdsourcing / archive_reports.py (no function)   5 0 2   100%
crowdsourcing / meta_runner.py dump_csv   5 0 0   100%
crowdsourcing / meta_runner.py check_triplestore_connection   9 0 0   100%
crowdsourcing / meta_runner.py get_ingestion_dirs   7 0 0   100%
crowdsourcing / meta_runner.py store_meta_input   43 0 0   100%
crowdsourcing / meta_runner.py get_closed_issues   34 0 0   100%
crowdsourcing / meta_runner.py process_single_issue   16 0 0   100%
crowdsourcing / meta_runner.py update_issue_labels   20 0 0   100%
crowdsourcing / meta_runner.py process_meta_issues   18 0 0   100%
crowdsourcing / meta_runner.py (no function)   19 0 2   100%
crowdsourcing / process_issues.py _validate_title   20 1 0   95%
crowdsourcing / process_issues.py validate   66 0 0   100%
crowdsourcing / process_issues.py answer   29 1 0   97%
crowdsourcing / process_issues.py get_user_id   21 0 0   100%
crowdsourcing / process_issues.py get_data_to_store   11 0 0   100%
crowdsourcing / process_issues.py _get_zenodo_token   1 0 0   100%
crowdsourcing / process_issues.py _create_deposition_resource   2 0 0   100%
crowdsourcing / process_issues.py _upload_data   4 0 0   100%
crowdsourcing / process_issues.py deposit_on_zenodo   14 0 0   100%
crowdsourcing / process_issues.py is_in_safe_list   13 0 0   100%
crowdsourcing / process_issues.py get_open_issues   48 3 0   94%
crowdsourcing / process_issues.py process_open_issues   55 0 0   100%
crowdsourcing / process_issues.py (no function)   39 0 2   100%
crowdsourcing / zenodo_utils.py get_zenodo_token   10 0 0   100%
crowdsourcing / zenodo_utils.py get_zenodo_base_url   2 0 0   100%
crowdsourcing / zenodo_utils.py create_deposition_resource   6 0 0   100%
crowdsourcing / zenodo_utils.py (no function)   6 0 0   100%
test / test_archive_manager.py TestArchiveManager.setUp   8 0 0   100%
test / test_archive_manager.py TestArchiveManager.tearDown   1 0 0   100%
test / test_archive_manager.py TestArchiveManager.test_init_creates_index   6 0 0   100%
test / test_archive_manager.py TestArchiveManager.test_add_report   6 0 0   100%
test / test_archive_manager.py TestArchiveManager.test_get_report_url_github   5 0 0   100%
test / test_archive_manager.py TestArchiveManager.test_archive_reports   28 0 0   100%
test / test_archive_manager.py TestArchiveManager.test_get_report_url_zenodo   7 0 0   100%
test / test_archive_manager.py TestArchiveManager.test_get_report_url_not_found   2 0 0   100%
test / test_archive_manager.py TestArchiveManager.test_init_creates_directories   8 0 0   100%
test / test_archive_manager.py TestArchiveManager.test_add_report_creates_directories   4 0 0   100%
test / test_archive_manager.py TestArchiveManager.test_archive_reports_no_reports   8 0 0   100%
test / test_archive_manager.py TestArchiveManager.test_archive_reports_error   15 0 0   100%
test / test_archive_manager.py (no function)   32 0 2   100%
test / test_archive_reports.py TestArchiveReports.setUp   11 0 0   100%
test / test_archive_reports.py TestArchiveReports.tearDown   3 0 0   100%
test / test_archive_reports.py TestArchiveReports.test_check_and_archive_reports_no_reports   3 0 0   100%
test / test_archive_reports.py TestArchiveReports.test_check_and_archive_reports_below_threshold   10 0 0   100%
test / test_archive_reports.py TestArchiveReports.test_check_and_archive_reports_above_threshold   16 0 0   100%
test / test_archive_reports.py TestArchiveReports.test_check_and_archive_reports_error   7 0 0   100%
test / test_archive_reports.py (no function)   24 0 2   100%
test / test_meta_runner.py TestMetaRunner.setUp   2 0 0   100%
test / test_meta_runner.py TestMetaRunner.tearDown   4 0 0   100%
test / test_meta_runner.py TestMetaRunner.test_get_ingestion_dirs   7 0 0   100%
test / test_meta_runner.py TestMetaRunner.test_get_closed_issues_success   11 0 0   100%
test / test_meta_runner.py TestMetaRunner.test_get_closed_issues_404   5 0 0   100%
test / test_meta_runner.py TestMetaRunner.test_get_closed_issues_rate_limit   7 0 0   100%
test / test_meta_runner.py TestMetaRunner.test_get_closed_issues_unexpected_status   7 0 0   100%
test / test_meta_runner.py TestMetaRunner.test_get_closed_issues_request_exception   7 0 0   100%
test / test_meta_runner.py TestMetaRunner.test_get_closed_issues_key_error   8 0 0   100%
test / test_meta_runner.py TestMetaRunner.test_store_meta_input_success   17 0 0   100%
test / test_meta_runner.py TestMetaRunner.test_store_meta_input_invalid_separator   9 0 0   100%
test / test_meta_runner.py TestMetaRunner.test_store_meta_input_empty_sections   9 0 0   100%
test / test_meta_runner.py TestMetaRunner.test_store_meta_input_empty_citations_section   7 0 0   100%
test / test_meta_runner.py TestMetaRunner.test_store_meta_input_empty_metadata_records   7 0 0   100%
test / test_meta_runner.py TestMetaRunner.test_store_meta_input_empty_citation_records   7 0 0   100%
test / test_meta_runner.py TestMetaRunner.test_store_meta_input_key_error   7 0 0   100%
test / test_meta_runner.py TestMetaRunner.test_store_meta_input_thousand_record_limit   21 0 0   100%
test / test_meta_runner.py TestMetaRunner.test_check_triplestore_connection_success   3 0 0   100%
test / test_meta_runner.py TestMetaRunner.test_check_triplestore_connection_failure   4 0 0   100%
test / test_meta_runner.py TestMetaRunner.test_process_single_issue_success   14 0 0   100%
test / test_meta_runner.py TestMetaRunner.test_process_single_issue_meta_process_failure   9 0 0   100%
test / test_meta_runner.py TestMetaRunner.test_process_single_issue_invalid_issue   11 0 0   100%
test / test_meta_runner.py TestMetaRunner.test_process_single_issue_settings_update   9 0 0   100%
test / test_meta_runner.py TestMetaRunner.test_process_single_issue_general_exception   9 0 0   100%
test / test_meta_runner.py TestUpdateIssueLabels.setUp   5 0 0   100%
test / test_meta_runner.py TestUpdateIssueLabels.tearDown   1 0 0   100%
test / test_meta_runner.py TestUpdateIssueLabels.test_successful_update_on_success   5 0 0   100%
test / test_meta_runner.py TestUpdateIssueLabels.test_successful_update_on_failure   5 0 0   100%
test / test_meta_runner.py TestUpdateIssueLabels.test_delete_label_error   5 0 0   100%
test / test_meta_runner.py TestUpdateIssueLabels.test_add_label_error   7 0 0   100%
test / test_meta_runner.py TestUpdateIssueLabels.test_delete_label_non_200_response   6 0 0   100%
test / test_meta_runner.py TestUpdateIssueLabels.test_add_label_non_200_response   5 0 0   100%
test / test_meta_runner.py TestProcessMetaIssues.setUp   6 0 0   100%
test / test_meta_runner.py TestProcessMetaIssues.tearDown   2 0 0   100%
test / test_meta_runner.py TestProcessMetaIssues.test_successful_processing   10 0 0   100%
test / test_meta_runner.py TestProcessMetaIssues.test_triplestore_not_responsive   3 0 0   100%
test / test_meta_runner.py TestProcessMetaIssues.test_no_issues_to_process   4 0 0   100%
test / test_meta_runner.py TestProcessMetaIssues.test_mixed_processing_results   8 0 0   100%
test / test_meta_runner.py TestProcessMetaIssues.test_error_handling   6 0 0   100%
test / test_meta_runner.py (no function)   92 0 2   100%
test / test_process_issues.py TestTitleValidation.test_valid_doi_title   4 0 0   100%
test / test_process_issues.py TestTitleValidation.test_valid_isbn_title   4 0 0   100%
test / test_process_issues.py TestTitleValidation.test_missing_deposit_keyword   4 0 0   100%
test / test_process_issues.py TestTitleValidation.test_unsupported_identifier   4 0 0   100%
test / test_process_issues.py TestTitleValidation.test_invalid_doi   4 0 0   100%
test / test_process_issues.py TestTitleValidation.test_malformed_title   4 0 0   100%
test / test_process_issues.py TestTitleValidation.test_unsupported_schema   5 0 0   100%
test / test_process_issues.py TestTitleValidation.test_valid_temp_id_title   4 0 0   100%
test / test_process_issues.py TestTitleValidation.test_valid_local_id_title   4 0 0   100%
test / test_process_issues.py TestTitleValidation.test_invalid_temp_id_format   4 0 0   100%
test / test_process_issues.py TestTitleValidation.test_invalid_local_id_format   4 0 0   100%
test / test_process_issues.py TestValidation.setUp   7 0 0   100%
test / test_process_issues.py TestValidation.tearDown   3 0 0   100%
test / test_process_issues.py TestValidation.test_valid_issue   5 0 0   100%
test / test_process_issues.py TestValidation.test_invalid_separator   5 0 0   100%
test / test_process_issues.py TestValidation.test_invalid_title_valid_body   5 0 0   100%
test / test_process_issues.py TestValidation.test_invalid_csv_structure   5 0 0   100%
test / test_process_issues.py TestValidation.test_get_data_to_store_valid_input   13 0 0   100%
test / test_process_issues.py TestValidation.test_get_data_to_store_invalid_csv   5 0 0   100%
test / test_process_issues.py TestValidation.test_get_data_to_store_empty_sections   5 0 0   100%
test / test_process_issues.py TestValidation.test_get_data_to_store_invalid_separator   5 0 0   100%
test / test_process_issues.py TestValidation.test_validation_with_validator   9 0 0   100%
test / test_process_issues.py TestValidation.test_validation_with_metadata_validation_file   6 0 0   100%
test / test_process_issues.py TestValidation.test_validation_with_both_validation_files   6 0 0   100%
test / test_process_issues.py TestValidation.test_validation_reads_validation_files   11 0 0   100%
test / test_process_issues.py TestValidation.test_validation_html_report_generation   9 0 0   100%
test / test_process_issues.py TestValidation.test_validation_html_report_generation_only_metadata_errors   9 0 0   100%
test / test_process_issues.py TestValidation.test_validation_html_report_generation_only_citations_errors   9 0 0   100%
test / test_process_issues.py TestValidation.test_validate_empty_body   6 0 0   100%
test / test_process_issues.py TestValidation.test_validate_empty_string_body   6 0 0   100%
test / test_process_issues.py TestValidation.test_validation_report_issue_number   10 0 0   100%
test / test_process_issues.py TestValidation.test_valid_temp_ids_in_csv   5 0 0   100%
test / test_process_issues.py TestValidation.test_valid_local_ids_in_csv   5 0 0   100%
test / test_process_issues.py TestValidation.test_mixed_identifier_types_in_csv   5 0 0   100%
test / test_process_issues.py TestUserValidation.setUp   6 0 0   100%
test / test_process_issues.py TestUserValidation.tearDown   3 0 0   100%
test / test_process_issues.py TestUserValidation.test_get_user_id_real_user   8 0 0   100%
test / test_process_issues.py TestUserValidation.test_get_user_id_nonexistent_user   7 0 0   100%
test / test_process_issues.py TestUserValidation.test_is_in_safe_list_authorized   1 0 0   100%
test / test_process_issues.py TestUserValidation.test_is_in_safe_list_unauthorized   1 0 0   100%
test / test_process_issues.py TestUserValidation.test_is_in_safe_list_file_not_found   8 0 0   100%
test / test_process_issues.py TestUserValidation.test_is_in_safe_list_invalid_yaml   3 0 0   100%
test / test_process_issues.py TestUserValidation.test_get_user_id_rate_limit   18 0 0   100%
test / test_process_issues.py TestUserValidation.test_get_user_id_connection_error_retry   7 0 0   100%
test / test_process_issues.py TestUserValidation.test_get_user_id_all_retries_fail   6 0 0   100%
test / test_process_issues.py TestUserValidation.test_get_user_id_timeout_retry   10 0 0   100%
test / test_process_issues.py TestGitHubAPI.setUp   5 0 0   100%
test / test_process_issues.py TestGitHubAPI.tearDown   1 0 0   100%
test / test_process_issues.py TestGitHubAPI.test_get_open_issues_success   11 0 0   100%
test / test_process_issues.py TestGitHubAPI.test_get_open_issues_404   5 0 0   100%
test / test_process_issues.py TestGitHubAPI.test_rate_limit_retry   19 0 0   100%
test / test_process_issues.py TestGitHubAPI.test_network_error_retry   6 0 0   100%
test / test_process_issues.py TestGitHubAPI.test_get_open_issues_all_attempts_fail   8 0 0   100%
test / test_process_issues.py TestGitHubAPI.test_rate_limit_already_expired   15 0 0   100%
test / test_process_issues.py TestAnswerFunction.setUp   5 0 0   100%
test / test_process_issues.py TestAnswerFunction.tearDown   1 0 0   100%
test / test_process_issues.py TestAnswerFunction.test_answer_valid_authorized   6 0 0   100%
test / test_process_issues.py TestAnswerFunction.test_answer_invalid_authorized   2 0 0   100%
test / test_process_issues.py TestAnswerFunction.test_answer_unauthorized   2 0 0   100%
test / test_process_issues.py TestAnswerFunction.test_answer_label_error   3 0 0   100%
test / test_process_issues.py TestAnswerFunction.test_answer_comment_error   3 0 0   100%
test / test_process_issues.py TestAnswerFunction.test_answer_close_error   4 0 0   100%
test / test_process_issues.py TestZenodoDeposit.setUp   3 0 0   100%
test / test_process_issues.py TestZenodoDeposit.tearDown   3 0 0   100%
test / test_process_issues.py TestZenodoDeposit.test_create_deposition_resource   11 0 0   100%
test / test_process_issues.py TestZenodoDeposit.test_upload_data   10 0 0   100%
test / test_process_issues.py TestZenodoDeposit.test_deposit_on_zenodo   12 0 0   100%
test / test_process_issues.py TestZenodoDeposit.test_create_deposition_resource_error   3 0 0   100%
test / test_process_issues.py TestZenodoDeposit.test_upload_data_error   5 0 0   100%
test / test_process_issues.py TestZenodoDeposit.test_deposit_on_zenodo_create_error   4 0 0   100%
test / test_process_issues.py TestZenodoDeposit.test_deposit_development_environment   9 0 0   100%
test / test_process_issues.py TestZenodoDeposit.test_deposit_production_environment   10 0 0   100%
test / test_process_issues.py TestZenodoDeposit.test_get_zenodo_token_development   2 0 0   100%
test / test_process_issues.py TestZenodoDeposit.test_get_zenodo_token_production   3 0 0   100%
test / test_process_issues.py TestZenodoDeposit.test_get_zenodo_token_missing   4 0 0   100%
test / test_process_issues.py TestZenodoDeposit.test_get_zenodo_token_missing_production   4 0 0   100%
test / test_process_issues.py TestZenodoDeposit.test_deposit_on_zenodo_publish_error   7 0 0   100%
test / test_process_issues.py TestProcessOpenIssues.setUp   3 0 0   100%
test / test_process_issues.py TestProcessOpenIssues.tearDown   1 0 0   100%
test / test_process_issues.py TestProcessOpenIssues.test_process_valid_authorized_issue   17 0 0   100%
test / test_process_issues.py TestProcessOpenIssues.test_process_unauthorized_user   13 0 0   100%
test / test_process_issues.py TestProcessOpenIssues.test_process_open_issues_data_processing_error   9 0 0   100%
test / test_process_issues.py TestProcessOpenIssues.test_process_open_issues_zenodo_deposit_error   10 0 0   100%
test / test_process_issues.py TestProcessOpenIssues.test_process_localhost_issue_skips_zenodo   13 0 0   100%
test / test_process_issues.py TestProcessOpenIssues.test_process_mixed_localhost_and_production_issues   15 0 0   100%
test / test_process_issues.py (no function)   192 0 2   100%
Total     1942 5 14   99%

No items found using the specified filter.