From 427cde1c1f1eda03be9808a53c2f8e920f98ddb5 Mon Sep 17 00:00:00 2001 From: Ivan Razumov Date: Mon, 12 Jan 2026 13:07:11 +0100 Subject: [PATCH 01/25] New edition of process_pr that signs file hashes instead of commits --- .github/workflows/test-process-pr.yaml | 21 +- docs/COMMANDS.md | 283 + docs/DESIGN.md | 529 + docs/TESTING.md | 168 + github_utils.py | 9 +- process-pull-request.py | 137 +- process_pr_v2.py | 7283 ++++++ repos/iarspider_cmssw/cmssw/milestones.py | 4 + .../TestProcessPr.test_ack_many_files.json | 1580 -- .../TestProcessPr.test_assign.json | 146 - .../TestProcessPr.test_assign_from.json | 49 - ...estProcessPr.test_assign_from_invalid.json | 35 - ...ProcessPr.test_assign_from_with_label.json | 53 - ...tProcessPr.test_autoassign_legacy_cat.json | 69 - .../TestProcessPr.test_backport.json | 79 - ...tProcessPr.test_backport_already_seen.json | 60 - .../TestProcessPr.test_backport_ok.json | 139 - .../TestProcessPr.test_build_only.json | 50 - ...rocessPr.test_cache_add_missing_items.json | 58 - .../TestProcessPr.test_clean_squash.json | 227 - .../TestProcessPr.test_close.json | 169 - ...estProcessPr.test_code_check_approved.json | 72 - .../TestProcessPr.test_code_checks_with.json | 87 - .../TestProcessPr.test_convert_cache.json | 58 - ...rocessPr.test_create_compressed_cache.json | 3094 --- .../TestProcessPr.test_create_repo.json | 37 - ...TestProcessPr.test_create_split_cache.json | 9102 ------- .../TestProcessPr.test_dirty_squash.json | 235 - ...TestProcessPr.test_draft_pr_ask_ready.json | 110 - .../TestProcessPr.test_draft_pr_assign.json | 64 - ...tProcessPr.test_draft_pr_fully_signed.json | 110 - .../TestProcessPr.test_draft_pr_opened.json | 68 - .../TestProcessPr.test_draft_pr_updated.json | 91 - .../TestProcessPr.test_empty_pr.json | 1 - .../TestProcessPr.test_enable_none.json | 127 - .../TestProcessPr.test_future_commit.json | 9 - .../TestProcessPr.test_get_backported_pr.json | 80 - .../TestProcessPr.test_grant.json | 63 - .../PRActionData/TestProcessPr.test_hold.json | 125 - ...rocessPr.test_ignore_rejected_invalid.json | 72 - ...tProcessPr.test_ignore_rejected_valid.json | 77 - .../TestProcessPr.test_ignore_sign.json | 128 - ...estProcessPr.test_invalid_test_params.json | 79 - .../TestProcessPr.test_invalid_type.json | 185 - .../TestProcessPr.test_many_commits_ok.json | 1120 - .../TestProcessPr.test_many_commits_warn.json | 13 - .../TestProcessPr.test_merge_pr.json | 83 - .../TestProcessPr.test_new_cmsdist_pr.json | 55 - .../TestProcessPr.test_new_issue.json | 28 - .../TestProcessPr.test_new_pr.json | 66 - .../TestProcessPr.test_orp_issue.json | 43 - .../TestProcessPr.test_partial_reset.json | 100 - ...essPr.test_partial_reset_dirty_squash.json | 127 - .../TestProcessPr.test_pr_develop_branch.json | 13 - ...tProcessPr.test_read_compressed_cache.json | 6054 ----- .../TestProcessPr.test_read_split_cache.json | 12421 ---------- .../TestProcessPr.test_remove_type.json | 71 - .../TestProcessPr.test_reopen.json | 179 - .../TestProcessPr.test_reset_signature.json | 111 - .../TestProcessPr.test_revert.json | 123 - .../TestProcessPr.test_sign_core.json | 70 - .../TestProcessPr.test_sign_reject.json | 234 - .../TestProcessPr.test_test_params.json | 171 - .../TestProcessPr.test_tests_rejected.json | 108 - .../TestProcessPr.test_too_many_commits.json | 1083 - .../TestProcessPr.test_too_many_files.json | 1542 -- .../TestProcessPr.test_type_invalid.json | 47 - .../TestProcessPr.test_type_valid.json | 48 - .../TestProcessPr.test_unassign.json | 151 - .../TestProcessPr.test_unhold.json | 131 - .../TestProcessPr.test_urgent.json | 133 - .../TestProcessPr.test_valid_type.json | 197 - .../TestProcessPr.test_warn_many_files.json | 13 - tests/PRActionData/test_abort_command.json | 63 + .../test_abort_ignored_already_aborted.json | 34 + .../test_abort_ignored_no_pending.json | 34 + .../PRActionData/test_abort_test_command.json | 63 + .../test_add_then_remove_same_label.json | 61 + .../PRActionData/test_allow_test_rights.json | 22 + tests/PRActionData/test_assign_category.json | 62 + .../test_assign_category_with_hyphen.json | 54 + .../test_assign_from_package.json | 62 + .../test_assign_mixed_valid_invalid.json | 62 + .../test_assign_multiple_categories.json | 63 + tests/PRActionData/test_backport_command.json | 40 + tests/PRActionData/test_basic_approval.json | 61 + .../PRActionData/test_basic_test_trigger.json | 64 + .../test_bot_code_checks_fail.json | 58 + .../test_bot_code_checks_pass.json | 58 + .../test_bot_comment_ignored.json | 45 + tests/PRActionData/test_bot_hold_command.json | 54 + .../test_bot_mention_invalid_command.json | 53 + .../test_build_command_basic.json | 65 + ...st_build_processed_if_no_bot_reaction.json | 65 + ...est_build_skipped_if_has_bot_reaction.json | 53 + .../test_build_then_test_last_one_wins.json | 72 + tests/PRActionData/test_cache_creation.json | 45 + .../test_category_specific_approval.json | 61 + ..._clean_squash_preserves_l2_signatures.json | 70 + ..._squash_preserves_l2_signatures_after.json | 70 + tests/PRActionData/test_close_command.json | 38 + .../test_cmsbuild_prefix_removal.json | 61 + .../PRActionData/test_code_checks_basic.json | 78 + .../test_code_checks_skipped_pending.json | 55 + .../test_code_checks_with_tool.json | 79 + .../test_comma_separated_labels.json | 55 + ...est_different_workflows_last_one_wins.json | 73 + ...dirty_squash_resets_all_l2_signatures.json | 70 + ...squash_resets_all_l2_signatures_after.json | 46 + ..._duplicate_test_commands_deduplicated.json | 72 + tests/PRActionData/test_empty_comment.json | 45 + tests/PRActionData/test_enable_gpu_tests.json | 64 + .../test_enable_multiple_tests.json | 64 + .../test_enable_none_disables_tests.json | 64 + tests/PRActionData/test_hold_command.json | 78 + .../test_ignore_tests_ib_failure.json | 54 + .../test_ignore_tests_no_effect.json | 53 + .../test_ignore_tests_no_tests.json | 45 + .../test_ignore_tests_rejected.json | 54 + .../test_invalid_label_in_comma_list.json | 53 + .../PRActionData/test_invalid_type_label.json | 53 + .../test_issue_skips_pr_only_commands.json | 30 + .../test_l2_membership_change.json | 83 + tests/PRActionData/test_merge_when_ready.json | 69 + .../test_minus_code_checks_queues_status.json | 58 + ...us_code_checks_rejected_on_second_run.json | 58 + .../test_minus_prefix_removes_label.json | 63 + .../test_mixed_add_remove_labels.json | 65 + ...h_resets_only_changed_file_signatures.json | 79 + ...ts_only_changed_file_signatures_after.json | 47 + .../test_mtype_labels_accumulate.json | 63 + ...st_multiple_files_multiple_categories.json | 62 + .../test_new_pr_initialization.json | 45 + .../test_no_bot_mention_invalid_command.json | 45 + .../test_non_command_comment.json | 45 + tests/PRActionData/test_orp_unhold_all.json | 69 + .../test_please_prefix_removal.json | 53 + ...us_code_checks_approved_on_second_run.json | 58 + .../test_plus_code_checks_queues_status.json | 58 + .../test_plus_prefix_adds_label.json | 54 + ...with_cms_bot_tag_processed_with_force.json | 45 + .../test_pr_with_cms_bot_tag_skipped.json | 5 + tests/PRActionData/test_rejection.json | 53 + .../test_remove_then_add_same_label.json | 61 + tests/PRActionData/test_reopen_command.json | 38 + .../test_retrigger_after_tests_failed.json | 72 + .../test_retrigger_different_arch.json | 73 + .../test_retrigger_while_tests_running.json | 72 + ...e_workflows_different_order_last_wins.json | 73 + ...signature_invalidation_on_file_change.json | 61 + .../test_signature_locked_after_commit.json | 61 + ...st_signature_not_locked_before_commit.json | 61 + ...est_test_blocked_by_missing_signature.json | 66 + .../test_test_command_with_workflows.json | 65 + ...processed_if_jenkins_status_different.json | 64 + ...t_test_processed_if_no_jenkins_status.json | 64 + ...est_skipped_if_jenkins_status_matches.json | 53 + .../test_test_then_build_last_one_wins.json | 73 + tests/PRActionData/test_test_with_params.json | 53 + .../test_type_and_mtype_together.json | 63 + .../test_type_command_adds_label.json | 54 + .../test_type_label_replaces_previous.json | 62 + .../PRActionData/test_unassign_category.json | 61 + .../test_unassign_invalid_category.json | 53 + .../test_unassign_multiple_categories.json | 69 + .../test_unhold_same_category.json | 61 + tests/PRActionData/test_urgent_command.json | 40 + tests/PRActionData/test_user_not_in_l2.json | 53 + .../test_welcome_message_author.json | 22 + .../PRActionData_integration/test_abort.json | 61 + .../test_ack_many_files.json | 71 + .../PRActionData_integration/test_assign.json | 63 + .../test_assign_from.json | 14 + .../test_assign_from_invalid.json | 5 + .../test_assign_from_with_label.json | 24 + .../test_backport.json | 67 + .../test_backport_already_seen.json | 53 + .../test_backport_ok.json | 65 + .../test_build_only.json | 55 + .../PRActionData_integration/test_close.json | 71 + .../test_cmsdist_start_tests.json | 22 + .../test_code_check_approved.json | 33 + .../test_code_checks_with.json | 53 + .../test_create_repo.json | 32 + .../test_draft_pr_ask_ready.json | 52 + .../test_draft_pr_assign.json | 32 + .../test_draft_pr_fully_signed.json | 58 + .../test_draft_pr_opened.json | 25 + .../test_draft_pr_ready.json | 30 + .../test_draft_pr_start_test.json | 22 + .../test_draft_pr_updated.json | 44 + .../test_empty_pr.json | 5 + .../test_enable_none.json | 5 + .../PRActionData_integration/test_grant.json | 53 + tests/PRActionData_integration/test_hold.json | 62 + .../test_ignore_rejected_invalid.json | 53 + .../test_ignore_rejected_valid.json | 53 + .../test_invalid_test_params.json | 64 + .../test_invalid_type.json | 63 + .../test_many_commits_ok.json | 71 + .../test_many_commits_warn.json | 41 + .../test_merge_pr.json | 65 + .../test_new_issue.json | 22 + .../PRActionData_integration/test_new_pr.json | 78 + .../test_orp_issue.json | 30 + .../test_test_all_params.json | 64 + .../test_too_many_commits.json | 33 + tests/ReplayData/TestProcessPr.test_abort.txt | 121 - .../TestProcessPr.test_ack_many_files.txt | 275 - .../ReplayData/TestProcessPr.test_assign.txt | 110 - .../TestProcessPr.test_assign_from.txt | 44 - ...TestProcessPr.test_assign_from_invalid.txt | 44 - ...tProcessPr.test_assign_from_with_label.txt | 44 - .../TestProcessPr.test_assign_legacy_cat.txt | 121 - ...stProcessPr.test_autoassign_legacy_cat.txt | 132 - .../TestProcessPr.test_backport.txt | 143 - ...stProcessPr.test_backport_already_seen.txt | 121 - .../TestProcessPr.test_backport_ok.txt | 121 - .../TestProcessPr.test_build_only.txt | 121 - ...ProcessPr.test_cache_add_missing_items.txt | 121 - .../TestProcessPr.test_clean_squash.txt | 143 - tests/ReplayData/TestProcessPr.test_close.txt | 110 - ...TestProcessPr.test_cmsdist_start_tests.txt | 110 - ...TestProcessPr.test_code_check_approved.txt | 110 - .../TestProcessPr.test_code_checks_with.txt | 110 - .../TestProcessPr.test_convert_cache.txt | 121 - ...ProcessPr.test_create_compressed_cache.txt | 440 - .../TestProcessPr.test_create_repo.txt | 44 - .../TestProcessPr.test_create_split_cache.txt | 440 - .../TestProcessPr.test_dirty_squash.txt | 143 - .../TestProcessPr.test_draft_pr_ask_ready.txt | 110 - .../TestProcessPr.test_draft_pr_assign.txt | 110 - ...stProcessPr.test_draft_pr_fully_signed.txt | 110 - .../TestProcessPr.test_draft_pr_opened.txt | 110 - .../TestProcessPr.test_draft_pr_ready.txt | 110 - ...TestProcessPr.test_draft_pr_start_test.txt | 110 - .../TestProcessPr.test_draft_pr_updated.txt | 121 - .../TestProcessPr.test_empty_pr.txt | 44 - .../TestProcessPr.test_enable_none.txt | 110 - .../TestProcessPr.test_future_commit.txt | 110 - .../TestProcessPr.test_get_backported_pr.txt | 110 - tests/ReplayData/TestProcessPr.test_grant.txt | 110 - tests/ReplayData/TestProcessPr.test_hold.txt | 110 - ...ProcessPr.test_ignore_rejected_invalid.txt | 110 - ...stProcessPr.test_ignore_rejected_valid.txt | 110 - .../TestProcessPr.test_ignore_sign.txt | 110 - .../TestProcessPr.test_ignore_smth.txt | 110 - ...TestProcessPr.test_invalid_test_params.txt | 110 - .../TestProcessPr.test_invalid_type.txt | 110 - .../TestProcessPr.test_many_commits.txt | 77 - .../TestProcessPr.test_many_commits_ok.txt | 1793 -- .../TestProcessPr.test_many_commits_warn.txt | 143 - .../TestProcessPr.test_merge_pr.txt | 121 - .../TestProcessPr.test_new_cmsdist_pr.txt | 132 - .../TestProcessPr.test_new_issue.txt | 44 - .../ReplayData/TestProcessPr.test_new_pr.txt | 132 - .../TestProcessPr.test_orp_issue.txt | 44 - .../TestProcessPr.test_partial_reset.txt | 121 - ...cessPr.test_partial_reset_dirty_squash.txt | 143 - ...rocessPr.test_please_test_missing_repo.txt | 132 - .../TestProcessPr.test_pr_develop_branch.txt | 44 - ...TestProcessPr.test_preserve_legacy_cat.txt | 121 - ...stProcessPr.test_read_compressed_cache.txt | 99 - .../TestProcessPr.test_read_split_cache.txt | 143 - .../TestProcessPr.test_remove_type.txt | 110 - .../ReplayData/TestProcessPr.test_reopen.txt | 110 - .../TestProcessPr.test_reset_signature.txt | 121 - .../ReplayData/TestProcessPr.test_revert.txt | 121 - .../TestProcessPr.test_run_test_params.txt | 110 - .../TestProcessPr.test_sign_core.txt | 110 - .../TestProcessPr.test_sign_reject.txt | 110 - .../TestProcessPr.test_start_tests.txt | 110 - .../TestProcessPr.test_test_all_params.txt | 110 - .../TestProcessPr.test_test_for_arch.txt | 110 - .../TestProcessPr.test_test_for_quearch.txt | 110 - .../TestProcessPr.test_test_for_queue.txt | 110 - .../TestProcessPr.test_test_params.txt | 110 - .../TestProcessPr.test_test_using_addpkg.txt | 110 - .../TestProcessPr.test_test_using_full.txt | 110 - .../TestProcessPr.test_test_with_pr.txt | 110 - .../TestProcessPr.test_test_workflow.txt | 110 - ...stProcessPr.test_testparams_all_params.txt | 109 - .../TestProcessPr.test_tests_passed.txt | 110 - .../TestProcessPr.test_tests_rejected.txt | 110 - .../TestProcessPr.test_too_many_commits.txt | 143 - .../TestProcessPr.test_too_many_files.txt | 99 - .../TestProcessPr.test_type_invalid.txt | 121 - .../TestProcessPr.test_type_valid.txt | 121 - .../TestProcessPr.test_unassign.txt | 110 - .../ReplayData/TestProcessPr.test_unhold.txt | 110 - .../ReplayData/TestProcessPr.test_urgent.txt | 121 - .../TestProcessPr.test_valid_type.txt | 110 - .../TestProcessPr.test_warn_many_files.txt | 110 - ...mmitCombinedStatus_org_repo_commit123.json | 17 + .../test_abort_command/IssueComments_1.json | 12 + .../test_abort_command/Issue_1.json | 16 + .../test_abort_command/PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + ...mmitCombinedStatus_org_repo_commit123.json | 17 + .../IssueComments_1.json | 12 + .../Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + ...mmitCombinedStatus_org_repo_commit123.json | 17 + .../IssueComments_1.json | 12 + .../Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + ...mmitCombinedStatus_org_repo_commit123.json | 17 + .../IssueComments_1.json | 12 + .../test_abort_test_command/Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + tests/ReplayData/test_ack_many_files.json | 1 - .../IssueComments_1.json | 22 + .../Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../test_assign_category/IssueComments_1.json | 13 + .../test_assign_category/Issue_1.json | 16 + .../test_assign_category/PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 13 + .../Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 13 + .../test_assign_from_package/Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 13 + .../Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 13 + .../Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../test_basic_approval/IssueComments_1.json | 13 + .../test_basic_approval/Issue_1.json | 16 + .../test_basic_approval/PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 22 + .../test_basic_test_trigger/Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 13 + .../Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../test_bot_ci_approval/IssueComments_1.json | 13 + .../test_bot_ci_approval/Issue_1.json | 16 + .../test_bot_ci_approval/PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 13 + .../test_bot_code_checks_fail/Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 13 + .../test_bot_code_checks_pass/Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 13 + .../test_bot_comment_ignored/Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 13 + .../Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 13 + .../test_bot_hold_command/Issue_1.json | 16 + .../test_bot_hold_command/PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 13 + .../Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 13 + .../Issue_1.json | 13 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 13 + .../test_build_command_basic/Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 13 + .../Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 21 + .../Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 22 + .../Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../test_cache_creation/Issue_1.json | 16 + .../test_cache_creation/PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 13 + .../Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 31 + .../Issue_1.json | 16 + .../PullRequest_1.json | 51 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 31 + .../Issue_1.json | 16 + .../PullRequest_1.json | 51 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 13 + .../test_cmsbuild_prefix_removal/Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + ...mmitCombinedStatus_org_repo_commit123.json | 11 + .../IssueComments_1.json | 12 + .../test_code_checks_basic/Issue_1.json | 16 + .../test_code_checks_basic/PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + ...mmitCombinedStatus_org_repo_commit123.json | 11 + .../IssueComments_1.json | 12 + .../Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + ...mmitCombinedStatus_org_repo_commit123.json | 11 + .../IssueComments_1.json | 12 + .../test_code_checks_with_tool/Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 13 + .../test_comma_separated_labels/Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../test_create_compressed_cache.json | 1 - tests/ReplayData/test_create_split_cache.json | 1 - .../IssueComments_1.json | 22 + .../Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 22 + .../Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 22 + .../Issue_1.json | 13 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 22 + .../Issue_1.json | 16 + .../PullRequest_1.json | 51 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 31 + .../Issue_1.json | 16 + .../PullRequest_1.json | 51 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 22 + .../Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../test_empty_comment/IssueComments_1.json | 13 + .../test_empty_comment/Issue_1.json | 16 + .../test_empty_comment/PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 13 + .../test_enable_gpu_tests/Issue_1.json | 16 + .../test_enable_gpu_tests/PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 13 + .../test_enable_multiple_tests/Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 13 + .../Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../test_hold_command/IssueComments_1.json | 22 + .../ReplayData/test_hold_command/Issue_1.json | 16 + .../test_hold_command/PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + ...mmitCombinedStatus_org_repo_commit123.json | 11 + .../IssueComments_1.json | 12 + .../test_ignore_tests_ib_failure/Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + ...mmitCombinedStatus_org_repo_commit123.json | 11 + .../IssueComments_1.json | 12 + .../test_ignore_tests_no_effect/Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 12 + .../test_ignore_tests_no_tests/Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + ...mmitCombinedStatus_org_repo_commit123.json | 11 + .../IssueComments_1.json | 12 + .../test_ignore_tests_rejected/Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 13 + .../Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 13 + .../test_invalid_type_label/Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 13 + .../Issue_1.json | 16 + .../PullRequest_1.json | 40 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 22 + .../test_l2_membership_change/Issue_1.json | 16 + .../PullRequest_1.json | 51 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 22 + .../test_merge_when_ready/Issue_1.json | 16 + .../test_merge_when_ready/PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 13 + .../Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 13 + .../Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + ...mmitCombinedStatus_org_repo_commit123.json | 11 + .../IssueComments_1.json | 13 + .../Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 13 + .../Issue_1.json | 20 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 13 + .../test_mixed_add_remove_labels/Issue_1.json | 20 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 31 + .../Issue_1.json | 16 + .../PullRequest_1.json | 56 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 40 + .../Issue_1.json | 16 + .../PullRequest_1.json | 56 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 22 + .../test_mtype_labels_accumulate/Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 13 + .../Issue_1.json | 16 + .../PullRequest_1.json | 56 + .../Repository_org_repo.json | 7 + .../test_new_pr_initialization/Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 13 + .../Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 13 + .../test_non_command_comment/Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../test_orp_unhold_all/IssueComments_1.json | 31 + .../test_orp_unhold_all/Issue_1.json | 16 + .../test_orp_unhold_all/PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 22 + .../test_please_prefix_removal/Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 13 + .../Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + ...mmitCombinedStatus_org_repo_commit123.json | 11 + .../IssueComments_1.json | 13 + .../Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 13 + .../Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 13 + .../test_plus_prefix_adds_label/Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 13 + .../Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../test_read_compressed_cache.json | 1 - .../test_rejection/IssueComments_1.json | 13 + tests/ReplayData/test_rejection/Issue_1.json | 16 + .../test_rejection/PullRequest_1.json | 46 + .../test_rejection/Repository_org_repo.json | 7 + .../IssueComments_1.json | 22 + .../Issue_1.json | 20 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + ...mmitCombinedStatus_org_repo_commit123.json | 17 + .../IssueComments_1.json | 22 + .../Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + ...mmitCombinedStatus_org_repo_commit123.json | 11 + .../IssueComments_1.json | 22 + .../Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + ...mmitCombinedStatus_org_repo_commit123.json | 11 + .../IssueComments_1.json | 22 + .../Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 22 + .../Issue_1.json | 13 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 22 + .../Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 13 + .../Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 13 + .../Issue_1.json | 16 + .../PullRequest_1.json | 52 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 13 + .../Issue_1.json | 16 + .../PullRequest_1.json | 41 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 13 + .../Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 13 + .../Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 13 + .../Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 13 + .../Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 13 + .../Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 22 + .../Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 22 + .../test_test_with_params/Issue_1.json | 16 + .../test_test_with_params/PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + tests/ReplayData/test_too_many_files.json | 1 - .../IssueComments_1.json | 22 + .../test_type_and_mtype_together/Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 13 + .../test_type_command_adds_label/Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 22 + .../Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 22 + .../test_unassign_category/Issue_1.json | 16 + .../test_unassign_category/PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 13 + .../Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 22 + .../Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../IssueComments_1.json | 22 + .../test_unhold_same_category/Issue_1.json | 16 + .../PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + .../test_user_not_in_l2/IssueComments_1.json | 13 + .../test_user_not_in_l2/Issue_1.json | 16 + .../test_user_not_in_l2/PullRequest_1.json | 46 + .../Repository_org_repo.json | 7 + tests/ReplayData/test_warn_many_files.json | 1 - .../CommentReactions_2056930228.json | 3 + ...848e38b8e387d7283a3e35818121487d9d76b.json | 208 + ...848e38b8e387d7283a3e35818121487d9d76b.json | 34 + .../test_abort/IssueComments_17.json | 796 + .../test_abort/Issue_17.json | 169 + .../test_abort/PullRequestCommits_17.json | 320 + .../test_abort/PullRequestFiles_17.json | 16 + .../test_abort/PullRequest_17.json | 454 + .../Repository_iarspider-cmssw_cmssw.json | 384 + ...b3e643d2bd16deee12590d1312a3addcd2d75.json | 76 + ...b3e643d2bd16deee12590d1312a3addcd2d75.json | 1287 + ...b3e643d2bd16deee12590d1312a3addcd2d75.json | 35 + .../test_ack_many_files/IssueComments_38.json | 94 + .../test_ack_many_files/Issue_38.json | 108 + .../PullRequestCommits_38.json | 86 + .../PullRequestFiles_38.json | 1202 + .../test_ack_many_files/PullRequest_38.json | 396 + .../RepoIdPullRequestFiles_399376380_38.json | 3 + .../Repository_iarspider-cmssw_cmssw.json | 391 + ...848e38b8e387d7283a3e35818121487d9d76b.json | 196 + ...848e38b8e387d7283a3e35818121487d9d76b.json | 34 + .../test_assign/IssueComments_17.json | 576 + .../test_assign/Issue_17.json | 151 + .../test_assign/PullRequestCommits_17.json | 320 + .../test_assign/PullRequestFiles_17.json | 16 + .../test_assign/PullRequest_17.json | 436 + .../Repository_iarspider-cmssw_cmssw.json | 384 + .../test_assign_from/IssueComments_27.json | 139 + .../test_assign_from/Issue_27.json | 78 + .../Repository_iarspider-cmssw_cmssw.json | 391 + .../IssueComments_27.json | 184 + .../test_assign_from_invalid/Issue_27.json | 87 + .../Repository_iarspider-cmssw_cmssw.json | 391 + .../IssueComments_27.json | 229 + .../test_assign_from_with_label/Issue_27.json | 78 + .../Repository_iarspider-cmssw_cmssw.json | 391 + ...c95f59caff42369887b5fee86583fe2bff161.json | 76 + ...c95f59caff42369887b5fee86583fe2bff161.json | 101 + ...c95f59caff42369887b5fee86583fe2bff161.json | 35 + .../test_backport/IssueComments_26.json | 94 + .../test_backport/Issue_26.json | 76 + .../Milestone_iarspider-cmssw_cmssw_4.json | 38 + .../test_backport/PullRequestCommits_26.json | 86 + .../test_backport/PullRequestFiles_26.json | 16 + .../test_backport/PullRequest_24.json | 442 + .../test_backport/PullRequest_26.json | 359 + .../Repository_iarspider-cmssw_cmssw.json | 391 + ...c95f59caff42369887b5fee86583fe2bff161.json | 113 + ...c95f59caff42369887b5fee86583fe2bff161.json | 35 + .../IssueComments_26.json | 184 + .../test_backport_already_seen/Issue_26.json | 168 + .../PullRequestCommits_26.json | 86 + .../PullRequestFiles_26.json | 16 + .../PullRequest_24.json | 442 + .../PullRequest_26.json | 451 + .../Repository_iarspider-cmssw_cmssw.json | 391 + ...6c5bd2fc93ef87eac8a48f5fc5816b01d7fc4.json | 89 + ...6c5bd2fc93ef87eac8a48f5fc5816b01d7fc4.json | 35 + .../test_backport_ok/IssueComments_9.json | 499 + .../test_backport_ok/Issue_9.json | 210 + .../PullRequestCommits_9.json | 332 + .../test_backport_ok/PullRequestFiles_9.json | 28 + .../test_backport_ok/PullRequest_35.json | 471 + .../test_backport_ok/PullRequest_9.json | 478 + .../Repository_iarspider-cmssw_cmssw.json | 391 + .../CommentReactions_2872583904.json | 31 + ...36c8884bcfbc516cc69fd99b0a161bb3a14d5.json | 137 + ...36c8884bcfbc516cc69fd99b0a161bb3a14d5.json | 35 + .../test_build_only/IssueComments_40.json | 184 + .../test_build_only/Issue_40.json | 154 + .../PullRequestCommits_40.json | 86 + .../test_build_only/PullRequestFiles_40.json | 16 + .../test_build_only/PullRequest_40.json | 442 + .../Repository_iarspider-cmssw_cmssw.json | 391 + ...848e38b8e387d7283a3e35818121487d9d76b.json | 208 + ...848e38b8e387d7283a3e35818121487d9d76b.json | 34 + .../test_close/IssueComments_17.json | 840 + .../test_close/Issue_17.json | 169 + .../test_close/PullRequestCommits_17.json | 320 + .../test_close/PullRequestFiles_17.json | 16 + .../test_close/PullRequest_17.json | 454 + .../Repository_iarspider-cmssw_cmssw.json | 384 + ...8e6b89e86de19afb3a428f54f08313457374e.json | 101 + ...8e6b89e86de19afb3a428f54f08313457374e.json | 35 + .../IssueComments_1.json | 139 + .../test_cmsdist_start_tests/Issue_1.json | 108 + .../PullRequestCommits_1.json | 168 + .../PullRequestFiles_1.json | 16 + .../PullRequest_1.json | 396 + .../Repository_iarspider-cmssw_cmsdist.json | 381 + ...454e30606b17e52000110972998326ce9e428.json | 88 + ...454e30606b17e52000110972998326ce9e428.json | 34 + .../IssueComments_17.json | 92 + .../test_code_check_approved/Issue_17.json | 151 + .../PullRequestCommits_17.json | 83 + .../PullRequestFiles_17.json | 16 + .../PullRequest_17.json | 436 + .../Repository_iarspider-cmssw_cmssw.json | 384 + ...a69106c5e0e17c03c87c13bdf187f03214fec.json | 113 + ...a69106c5e0e17c03c87c13bdf187f03214fec.json | 35 + .../IssueComments_25.json | 184 + .../test_code_checks_with/Issue_25.json | 179 + .../PullRequestCommits_25.json | 86 + .../PullRequestFiles_25.json | 16 + .../test_code_checks_with/PullRequest_25.json | 442 + .../Repository_iarspider-cmssw_cmssw.json | 391 + .../test_create_repo/IssueComments_30.json | 3 + .../test_create_repo/Issue_30.json | 68 + .../Repository_iarspider-cmssw_cmssw.json | 391 + ...e3f5888b5433dcae409ee336b2ad422595246.json | 113 + ...e3f5888b5433dcae409ee336b2ad422595246.json | 35 + .../IssueComments_21.json | 409 + .../test_draft_pr_ask_ready/Issue_21.json | 162 + .../PullRequestCommits_21.json | 168 + .../PullRequestFiles_21.json | 16 + .../PullRequest_21.json | 451 + .../Repository_iarspider-cmssw_cmssw.json | 391 + ...8474754099798ff50cb07287e7caa4786f247.json | 113 + ...8474754099798ff50cb07287e7caa4786f247.json | 35 + .../IssueComments_21.json | 139 + .../test_draft_pr_assign/Issue_21.json | 153 + .../PullRequestCommits_21.json | 86 + .../PullRequestFiles_21.json | 16 + .../test_draft_pr_assign/PullRequest_21.json | 442 + .../Repository_iarspider-cmssw_cmssw.json | 391 + ...e3f5888b5433dcae409ee336b2ad422595246.json | 113 + ...e3f5888b5433dcae409ee336b2ad422595246.json | 35 + .../IssueComments_21.json | 454 + .../test_draft_pr_fully_signed/Issue_21.json | 162 + .../PullRequestCommits_21.json | 168 + .../PullRequestFiles_21.json | 16 + .../PullRequest_21.json | 451 + .../Repository_iarspider-cmssw_cmssw.json | 391 + ...8474754099798ff50cb07287e7caa4786f247.json | 89 + ...8474754099798ff50cb07287e7caa4786f247.json | 35 + .../IssueComments_21.json | 94 + .../test_draft_pr_opened/Issue_21.json | 153 + .../PullRequestCommits_21.json | 86 + .../PullRequestFiles_21.json | 16 + .../test_draft_pr_opened/PullRequest_21.json | 442 + .../Repository_iarspider-cmssw_cmssw.json | 391 + ...e3f5888b5433dcae409ee336b2ad422595246.json | 113 + ...e3f5888b5433dcae409ee336b2ad422595246.json | 35 + .../test_draft_pr_ready/IssueComments_21.json | 319 + .../test_draft_pr_ready/Issue_21.json | 162 + .../PullRequestCommits_21.json | 168 + .../PullRequestFiles_21.json | 16 + .../test_draft_pr_ready/PullRequest_21.json | 451 + .../Repository_iarspider-cmssw_cmssw.json | 391 + ...e3f5888b5433dcae409ee336b2ad422595246.json | 113 + ...e3f5888b5433dcae409ee336b2ad422595246.json | 35 + .../IssueComments_21.json | 319 + .../test_draft_pr_start_test/Issue_21.json | 162 + .../PullRequestCommits_21.json | 168 + .../PullRequestFiles_21.json | 16 + .../PullRequest_21.json | 451 + .../Repository_iarspider-cmssw_cmssw.json | 391 + ...e3f5888b5433dcae409ee336b2ad422595246.json | 76 + ...e3f5888b5433dcae409ee336b2ad422595246.json | 101 + ...e3f5888b5433dcae409ee336b2ad422595246.json | 35 + .../IssueComments_21.json | 229 + .../test_draft_pr_updated/Issue_21.json | 162 + .../PullRequestCommits_21.json | 168 + .../PullRequestFiles_21.json | 16 + .../test_draft_pr_updated/PullRequest_21.json | 451 + .../Repository_iarspider-cmssw_cmssw.json | 391 + .../test_empty_pr/Issue_33.json | 71 + .../test_empty_pr/PullRequest_33.json | 359 + .../Repository_iarspider-cmssw_cmssw.json | 391 + ...6c5bd2fc93ef87eac8a48f5fc5816b01d7fc4.json | 89 + ...6c5bd2fc93ef87eac8a48f5fc5816b01d7fc4.json | 35 + .../test_enable_none/IssueComments_9.json | 409 + .../test_enable_none/Issue_9.json | 210 + .../PullRequestCommits_9.json | 332 + .../test_enable_none/PullRequestFiles_9.json | 28 + .../test_enable_none/PullRequest_9.json | 478 + .../Repository_iarspider-cmssw_cmssw.json | 391 + ...a69106c5e0e17c03c87c13bdf187f03214fec.json | 113 + ...a69106c5e0e17c03c87c13bdf187f03214fec.json | 35 + .../test_grant/IssueComments_25.json | 184 + .../test_grant/Issue_25.json | 179 + .../test_grant/PullRequestCommits_25.json | 86 + .../test_grant/PullRequestFiles_25.json | 16 + .../test_grant/PullRequest_25.json | 442 + .../Repository_iarspider-cmssw_cmssw.json | 391 + ...848e38b8e387d7283a3e35818121487d9d76b.json | 196 + ...848e38b8e387d7283a3e35818121487d9d76b.json | 34 + .../test_hold/IssueComments_17.json | 444 + .../test_hold/Issue_17.json | 151 + .../test_hold/PullRequestCommits_17.json | 320 + .../test_hold/PullRequestFiles_17.json | 16 + .../test_hold/PullRequest_17.json | 436 + .../Repository_iarspider-cmssw_cmssw.json | 384 + ...2a62359c0f0b69dd35bacd8231714cdbab3a0.json | 137 + ...2a62359c0f0b69dd35bacd8231714cdbab3a0.json | 35 + .../IssueComments_25.json | 319 + .../Issue_25.json | 179 + .../PullRequestCommits_25.json | 168 + .../PullRequestFiles_25.json | 16 + .../PullRequest_25.json | 442 + .../Repository_iarspider-cmssw_cmssw.json | 391 + ...2a62359c0f0b69dd35bacd8231714cdbab3a0.json | 137 + ...2a62359c0f0b69dd35bacd8231714cdbab3a0.json | 35 + .../IssueComments_25.json | 319 + .../test_ignore_rejected_valid/Issue_25.json | 179 + .../PullRequestCommits_25.json | 168 + .../PullRequestFiles_25.json | 16 + .../PullRequest_25.json | 442 + .../Repository_iarspider-cmssw_cmssw.json | 391 + ...a69106c5e0e17c03c87c13bdf187f03214fec.json | 113 + ...a69106c5e0e17c03c87c13bdf187f03214fec.json | 35 + .../IssueComments_25.json | 229 + .../test_invalid_test_params/Issue_25.json | 188 + .../PullRequestCommits_25.json | 86 + .../PullRequestFiles_25.json | 16 + .../PullRequest_25.json | 451 + .../Repository_iarspider-cmssw_cmssw.json | 391 + ...848e38b8e387d7283a3e35818121487d9d76b.json | 208 + ...848e38b8e387d7283a3e35818121487d9d76b.json | 34 + .../test_invalid_type/IssueComments_17.json | 928 + .../test_invalid_type/Issue_17.json | 188 + .../PullRequestCommits_17.json | 320 + .../PullRequestFiles_17.json | 16 + .../test_invalid_type/PullRequest_17.json | 454 + .../Repository_iarspider-cmssw_cmssw.json | 384 + ...9bd146e87a00eb90eccef12f487ecc8f4c496.json | 75 + ...40e727939b320077b2552cd1e2819122762e6.json | 98 + ...69bf8c51721082d8b4b175557a4fd7a41859e.json | 98 + ...119e4905a0a36a535f2578ce96b41d687f63a.json | 98 + ...17968795f452376ad263cbe1a5e4af8780302.json | 98 + ...c33ec8249a4a1efe2ffc8bcc3e4b5f84cbc5f.json | 98 + ...848de6118a8ec0031d42a239b532e28ba7b20.json | 98 + ...9fe71295ca36dcc6fa3e7ab7bbfd88a81d86c.json | 98 + ...c294006f0727c08a8c535d4c35ca9d3a11560.json | 98 + ...2eabec2dab6ab48fc7186266ccb6c7b964dc3.json | 98 + ...c0caac63c4155f2a10acc26b59d7547ff6f21.json | 98 + ...5494b0ed51567d0f58fa3362caf3de1387fb4.json | 98 + ...452e7560cb359d5f856bf0020c2527af8d40f.json | 98 + ...957c10865d54f442abb9a4db2b2f67548d928.json | 98 + ...a794cf3573f21e2d2b7ab67f4b70faa424ef7.json | 98 + ...ed36eb31d0b944c227a24799b77e101cc22f2.json | 98 + ...fe5cac27d329c45335fff21a76cc6f2887a42.json | 98 + ...73d9e8b6b95b05890f46a7ee7b5b80d025ca9.json | 98 + ...e3e8910b334dc7ed092ac57f5eb98c8d2da30.json | 98 + ...2add26d5813078727a617884b9a3ae30e3de9.json | 98 + ...89ecf320569de6f3eb0a721574ba90bc8c751.json | 98 + ...ab99045167f9b921bd150ec6b92a07cabbb68.json | 98 + ...e5e3248cb1f3a929ad5efeffbe0137d5f4fad.json | 98 + ...546d623ee31bace9df6a1aa71604b990527ff.json | 98 + ...b64a0679da9b688f184f5b90fbccca98b8cf0.json | 98 + ...7bdc1af3512d1d8752e4319c103392a133d03.json | 98 + ...549d26370b1e7b5f3425f977194e08dc5fde7.json | 98 + ...195aa80a73ff17ebf0a4b53550cefb7056ba9.json | 98 + ...781365fb37582e3aad27b77ba897069211812.json | 98 + ...1e57f44b9aedeb0ce88c175b9937de6ad3c13.json | 98 + ...ffe70bb1d3efcb3b6dbda251f3035b5d9ee56.json | 98 + ...2dab36ead5f115ab89eb5d20d33b00afa67dc.json | 98 + ...336e23277759bd12515136da78f7fef5dcae6.json | 98 + ...890c532fdfe2150006de853719fab3cffdc34.json | 98 + ...8fb6875bad67ed11a790b5c1bfe92a832fe2a.json | 98 + ...cc3cfe87c45e330c41b0728be267288fe5c02.json | 98 + ...70c74cab565cd7e2b6139e5a57f92b7b886be.json | 98 + ...c4bcbe523e52af825a241984c35a846aba5f2.json | 98 + ...2e68630f8c1f3e4b295ea80831c6a9caa4dc2.json | 98 + ...43679f52ced591752a2f2e0d2f19d61818ce4.json | 98 + ...311b32085fd8a201f47993987cd3898519913.json | 98 + ...57f1f7cd199df49c988724d9b630389964ce8.json | 98 + ...d6cfcd9df7f9567c66bd0f638d602081c02c5.json | 98 + ...2b863eaf5570a0c65ea9b6326a97ab2e39c9e.json | 98 + ...0511d889195da564138babf2d14dc82f0b27f.json | 98 + ...cfd8011ce680166019acad3b78d4d1aec5704.json | 98 + ...0a11ff295071daa92b2e0ae3e9351e555e22a.json | 98 + ...b56ff888627d0dbc1340ed2f5f7a1d29618f7.json | 98 + ...437bf09655fb67fa7f0ddecf969f2635db32e.json | 98 + ...537309af26ec463652904bb9b4af194f053f9.json | 98 + ...4517e606f00a5155e904306a2cdffbdb686e4.json | 98 + ...802afc54c74ac0dc8b396099bf5c8f233dd91.json | 98 + ...ad66f52fd286f124c32aa3884ae1ad36f3963.json | 98 + ...02bf06994fb808632d5194c505b3cef667749.json | 98 + ...5d8ed3dc748e23c565b2978083036918468f6.json | 98 + ...ad7b437304bb6b0c81d7a2c7234a855f0c693.json | 98 + ...eaceed1efbb6412cd414cf42c11b523d43b46.json | 98 + ...380dd03a72ed6b936206410d5d306635baffb.json | 98 + ...2f1ca3368168db2046b418e246a4cd9482340.json | 98 + ...4a3979fca7c6983d73f89249f1a072b6939f3.json | 98 + ...ba2443a4447a1d41355760c895ecc703ec57c.json | 98 + ...450fe9fad9b732c752fda13eae5358150ac6c.json | 98 + ...cefc3b695998fca753f27b7937f7b8b0fd73a.json | 98 + ...4958540750fe64b9271a4beb0c7d929bf7dff.json | 98 + ...cd52d642b567fd401abeeeb73f6a03b7c25d1.json | 98 + ...8fa4600824dd0b65dd81554cf06f57ce2e636.json | 98 + ...3589b1a2b00e7ad39d538a9e44473864a697d.json | 98 + ...612cdc6079b0ada45c2eda67de3c756436cb3.json | 98 + ...61e63325659a35291cb1bf1a0cfdb6eb57eea.json | 98 + ...9dd71a5f9eea6065d1bca2563fd0ba26cb31f.json | 98 + ...e5a4c24bfee4440e1eb74d380b3ed7f988714.json | 98 + ...b8db88bca87267617e2d9f231cdf217241fe7.json | 98 + ...8ac02f7370f2b3e0ba18eb326231f3dc25767.json | 98 + ...284bbd93b36212d3a7dc0efe66029db4ed642.json | 98 + ...30fdf02dea2dd5fc3cdd44dd47bba178273a9.json | 98 + ...5abe7d624415d97cadc713b7e149d71ff65f1.json | 98 + ...220f19348e3c2f0c4c6dc7945d469f1331786.json | 98 + ...ccd866520ab62c501af476ad5b3b9af8f77eb.json | 98 + ...26930d03076afbc7f8385f6bd00ce8b1a1c01.json | 98 + ...55938020bf324697a713ef8341cf74c676473.json | 98 + ...3683ebe3a199a999ddd4435f1f8f577ecbb2b.json | 98 + ...d83317c6f5c690ddab5f833e121a7aa7e9958.json | 98 + ...8596aa02ca43bb0a2f4679cb998b842585b99.json | 98 + ...4846e873fba740874ec7ecadce4a6d00f2321.json | 98 + ...509c1d2433ff6733e6d5e555fd0f9af47667a.json | 98 + ...aa3635f84f2b32d16ac4775fbda37fa5e1dd4.json | 98 + ...c832e10ac29e3c0f1b91fbb5f06891189f011.json | 98 + ...7f4e8953e009205e255f49ace95dda6413888.json | 98 + ...900e5eb2a5260f308b0b1818139704e5888ae.json | 98 + ...dfec2212e29c247349c0a111b9daaacba4e54.json | 98 + ...fcbb09eae7cac65425211c039a8f252d49143.json | 98 + ...fa3ef63254933653481c5d3b5d17bd827c7a8.json | 98 + ...e15adb5f414c1d422b65e4b0fb434ac2b8a0c.json | 98 + ...d59ffdbd00680efdcd278c945d0190f5431a2.json | 98 + ...85e75d345a0aa57d3d82947b0fe54acb14eb6.json | 98 + ...61e5788ec64eff9d219dd89a0e9168a21941f.json | 98 + ...0dbaa543986ca943e1dd7a1ded581b75ed42a.json | 98 + ...445818e0e4087aeca09673ee6977864fe01ef.json | 98 + ...fc27c06fcb20088043e80e5c70f9a7c7f557f.json | 98 + ...5b32e0086bf1e95b73851de4fb2d2fa863c1f.json | 98 + ...51426d8398cdfd67e05d0e522f00cf18d962d.json | 98 + ...21e5cda8755d345731bee5df062757bdc8d0b.json | 98 + ...1fc9eeaa7ebe9071efe91205570db06a728cb.json | 98 + ...63acec5999824c69d122ee9bfe4e486175edf.json | 98 + ...7d8dadbca5bc85cc272df8cf61276baf04cd4.json | 98 + ...cfede232680315b8e776989863016c434c1c4.json | 98 + ...758b37d2f7b8054f84e716323ef01113bdc5a.json | 98 + ...a737b809df919dd2e8e3ab615b1cfbe112bd4.json | 98 + ...a2ff5d37ce752da86c15bd721b990f72d2204.json | 98 + ...8c8c7fa228d3b3ba1f0b49d5abf6351ac813a.json | 98 + ...681e6cd269af256fbc9834ad8258389ae0a3b.json | 98 + ...976a868ea2226600ac191d4a63767b514bef0.json | 98 + ...2bff101779e4b82efc928ce50db4cd3464c4d.json | 98 + ...f6a05ba120a65d58d103938db8df9baf4f806.json | 98 + ...4a95a7669bb688eaf9c99d741615bdeb9a3be.json | 98 + ...f3003d8ca2adca1fa6521e79de2e38fa00085.json | 98 + ...2b32fe21f87917b8134e435a9d944a1593eee.json | 98 + ...38ae6aa615c78f5507d315c046d9e82bbce0d.json | 98 + ...d69c0800f7c5aa1c7c5f0fa600f94f3e3ba41.json | 98 + ...3429387987cbe0740b97c3bd9e3c3053776d2.json | 98 + ...f434953618d3ee909a82555a2c2e8fe31b8e4.json | 98 + ...694fb9ddd2908939b0bdf644c997587af5322.json | 98 + ...5c0f2d0042e9e45aa5edfee9a307690c0cd9e.json | 98 + ...a9d9f368018e0672e7d2e931f8ae24a90ad83.json | 98 + ...a20fe025a120a38033327b45213f75a30ebaf.json | 98 + ...965eed76efeb820839413951e7b490756ded2.json | 98 + ...d78a1bb6abf12aa30b3134c4e506f2a5f8d58.json | 98 + ...b9bd64685138bda5b058402f47aa23b2f4e1e.json | 98 + ...c5623eff68a8c0c5f25827b85655dc611d186.json | 98 + ...57159b2c24366f0d1b880aab463aaaf5da412.json | 98 + ...9321d938d68ff7634c0594d63609a81d08f6e.json | 98 + ...759756a4b88a6da27e6f1d1697373db4da96c.json | 98 + ...e6666b3cafc148568d7e58d46bcaf9e0f2143.json | 98 + ...f41004058e91d8dbb3caff061a097ea008911.json | 98 + ...451b752fd843e69a9f2cd1cbb0dcc060ba4d0.json | 98 + ...cf1bf814047845cf0e6a09112abb57a0b6299.json | 98 + ...7e1b62f6cec2fa47b6b25ef6fcf7225badc27.json | 98 + ...30eae688dec0bcd6ba16c7eb31d069f4c79d9.json | 98 + ...acb1a1188b01dd1ebbbd6169a5b845d5ecdd0.json | 98 + ...c91c29611a67043bd36b4c409fd938dde2e0b.json | 98 + ...d666bbaa62e716c0d66caac74d0eabed9dca2.json | 98 + ...440e9ca574ac4971cc1478dae15a25e4357c4.json | 98 + ...4411be9156696683ecf374478379ae1e65799.json | 98 + ...39ca6442e7d783d7d57d8cddf98ebf90cc148.json | 98 + ...ff85f1393afe455fe42a4873ff3fcfcfc02b5.json | 98 + ...f884e422cc0a3f20d38016b7b1ba9b8fd4de2.json | 98 + ...2f9dce4aaf89fe9bd6a3b629d8653a99f6961.json | 98 + ...9a9f267a1c45ffa701242e9250f2ba50991df.json | 98 + ...30292720ccabc7c199249551291da825e1a90.json | 98 + ...70e47cb5a7af124bb2cc78c00b39d8d9567ec.json | 98 + ...9bd146e87a00eb90eccef12f487ecc8f4c496.json | 98 + ...1d3579f11ce0f851c037b0ac50fb641d79f11.json | 98 + ...9bd146e87a00eb90eccef12f487ecc8f4c496.json | 34 + .../IssueComments_18.json | 92 + .../test_many_commits_ok/Issue_18.json | 105 + .../PullRequestCommits_18.json | 11933 ++++++++++ .../PullRequestFiles_18.json | 1816 ++ .../test_many_commits_ok/PullRequest_18.json | 390 + .../Repository_iarspider-cmssw_cmssw.json | 384 + ...9bd146e87a00eb90eccef12f487ecc8f4c496.json | 75 + ...9bd146e87a00eb90eccef12f487ecc8f4c496.json | 34 + .../IssueComments_18.json | 3 + .../test_many_commits_warn/Issue_18.json | 69 + .../Milestone_iarspider-cmssw_cmssw_4.json | 37 + .../PullRequestCommits_18.json | 11933 ++++++++++ .../PullRequestFiles_18.json | 1816 ++ .../PullRequest_18.json | 354 + ...RepoIdPullRequestCommits_399376380_18.json | 4033 ++++ .../RepoIdPullRequestFiles_399376380_18.json | 616 + .../Repository_iarspider-cmssw_cmssw.json | 384 + ...13ce8e0b33985d3425d9384bb8d5d4ab0ce48.json | 197 + ...13ce8e0b33985d3425d9384bb8d5d4ab0ce48.json | 35 + .../test_merge_pr/IssueComments_36.json | 364 + .../test_merge_pr/Issue_36.json | 163 + .../test_merge_pr/PullRequestCommits_36.json | 86 + .../test_merge_pr/PullRequestFiles_36.json | 16 + .../test_merge_pr/PullRequest_36.json | 451 + .../Repository_iarspider-cmssw_cmssw.json | 391 + .../test_new_issue/IssueComments_27.json | 3 + .../test_new_issue/Issue_27.json | 68 + .../Repository_iarspider-cmssw_cmssw.json | 391 + ...454e30606b17e52000110972998326ce9e428.json | 75 + ...454e30606b17e52000110972998326ce9e428.json | 98 + ...454e30606b17e52000110972998326ce9e428.json | 34 + .../test_new_pr/IssueComments_17.json | 3 + .../test_new_pr/Issue_17.json | 69 + .../Milestone_iarspider-cmssw_cmssw_4.json | 37 + .../test_new_pr/PullRequestCommits_17.json | 83 + .../test_new_pr/PullRequestFiles_17.json | 16 + .../test_new_pr/PullRequest_17.json | 354 + .../Repository_iarspider-cmssw_cmssw.json | 384 + .../test_orp_issue/IssueComments_39.json | 49 + .../test_orp_issue/Issue_39.json | 68 + .../Repository_iarspider-cmssw_cmssw.json | 391 + ...c05e17ee74e5ace3c4e5d5d066de49e364edb.json | 113 + ...c05e17ee74e5ace3c4e5d5d066de49e364edb.json | 35 + .../IssueComments_24.json | 229 + .../test_test_all_params/Issue_24.json | 159 + .../PullRequestCommits_24.json | 86 + .../PullRequestFiles_24.json | 16 + .../test_test_all_params/PullRequest_24.json | 442 + .../Repository_iarspider-cmssw_cmssw.json | 391 + ...c88ff0403fad82b647b13c2be704548a78df4.json | 75 + ...c88ff0403fad82b647b13c2be704548a78df4.json | 34 + .../IssueComments_18.json | 92 + .../test_too_many_commits/Issue_18.json | 160 + .../PullRequestCommits_18.json | 19754 ++++++++++++++++ .../PullRequestFiles_18.json | 1816 ++ .../test_too_many_commits/PullRequest_18.json | 445 + .../Repository_iarspider-cmssw_cmssw.json | 384 + tests/conftest.py | 24 +- tests/convert_http_recording.py | 865 + tests/test-requirements.txt | 3 +- tests/test_process_pr_v2.py | 9515 ++++++++ 1146 files changed, 161196 insertions(+), 53306 deletions(-) create mode 100644 docs/COMMANDS.md create mode 100644 docs/DESIGN.md create mode 100644 docs/TESTING.md create mode 100644 process_pr_v2.py delete mode 100644 tests/PRActionData/TestProcessPr.test_ack_many_files.json delete mode 100644 tests/PRActionData/TestProcessPr.test_assign.json delete mode 100644 tests/PRActionData/TestProcessPr.test_assign_from.json delete mode 100644 tests/PRActionData/TestProcessPr.test_assign_from_invalid.json delete mode 100644 tests/PRActionData/TestProcessPr.test_assign_from_with_label.json delete mode 100644 tests/PRActionData/TestProcessPr.test_autoassign_legacy_cat.json delete mode 100644 tests/PRActionData/TestProcessPr.test_backport.json delete mode 100644 tests/PRActionData/TestProcessPr.test_backport_already_seen.json delete mode 100644 tests/PRActionData/TestProcessPr.test_backport_ok.json delete mode 100644 tests/PRActionData/TestProcessPr.test_build_only.json delete mode 100644 tests/PRActionData/TestProcessPr.test_cache_add_missing_items.json delete mode 100644 tests/PRActionData/TestProcessPr.test_clean_squash.json delete mode 100644 tests/PRActionData/TestProcessPr.test_close.json delete mode 100644 tests/PRActionData/TestProcessPr.test_code_check_approved.json delete mode 100644 tests/PRActionData/TestProcessPr.test_code_checks_with.json delete mode 100644 tests/PRActionData/TestProcessPr.test_convert_cache.json delete mode 100644 tests/PRActionData/TestProcessPr.test_create_compressed_cache.json delete mode 100644 tests/PRActionData/TestProcessPr.test_create_repo.json delete mode 100644 tests/PRActionData/TestProcessPr.test_create_split_cache.json delete mode 100644 tests/PRActionData/TestProcessPr.test_dirty_squash.json delete mode 100644 tests/PRActionData/TestProcessPr.test_draft_pr_ask_ready.json delete mode 100644 tests/PRActionData/TestProcessPr.test_draft_pr_assign.json delete mode 100644 tests/PRActionData/TestProcessPr.test_draft_pr_fully_signed.json delete mode 100644 tests/PRActionData/TestProcessPr.test_draft_pr_opened.json delete mode 100644 tests/PRActionData/TestProcessPr.test_draft_pr_updated.json delete mode 100644 tests/PRActionData/TestProcessPr.test_empty_pr.json delete mode 100644 tests/PRActionData/TestProcessPr.test_enable_none.json delete mode 100644 tests/PRActionData/TestProcessPr.test_future_commit.json delete mode 100644 tests/PRActionData/TestProcessPr.test_get_backported_pr.json delete mode 100644 tests/PRActionData/TestProcessPr.test_grant.json delete mode 100644 tests/PRActionData/TestProcessPr.test_hold.json delete mode 100644 tests/PRActionData/TestProcessPr.test_ignore_rejected_invalid.json delete mode 100644 tests/PRActionData/TestProcessPr.test_ignore_rejected_valid.json delete mode 100644 tests/PRActionData/TestProcessPr.test_ignore_sign.json delete mode 100644 tests/PRActionData/TestProcessPr.test_invalid_test_params.json delete mode 100644 tests/PRActionData/TestProcessPr.test_invalid_type.json delete mode 100644 tests/PRActionData/TestProcessPr.test_many_commits_ok.json delete mode 100644 tests/PRActionData/TestProcessPr.test_many_commits_warn.json delete mode 100644 tests/PRActionData/TestProcessPr.test_merge_pr.json delete mode 100644 tests/PRActionData/TestProcessPr.test_new_cmsdist_pr.json delete mode 100644 tests/PRActionData/TestProcessPr.test_new_issue.json delete mode 100644 tests/PRActionData/TestProcessPr.test_new_pr.json delete mode 100644 tests/PRActionData/TestProcessPr.test_orp_issue.json delete mode 100644 tests/PRActionData/TestProcessPr.test_partial_reset.json delete mode 100644 tests/PRActionData/TestProcessPr.test_partial_reset_dirty_squash.json delete mode 100644 tests/PRActionData/TestProcessPr.test_pr_develop_branch.json delete mode 100644 tests/PRActionData/TestProcessPr.test_read_compressed_cache.json delete mode 100644 tests/PRActionData/TestProcessPr.test_read_split_cache.json delete mode 100644 tests/PRActionData/TestProcessPr.test_remove_type.json delete mode 100644 tests/PRActionData/TestProcessPr.test_reopen.json delete mode 100644 tests/PRActionData/TestProcessPr.test_reset_signature.json delete mode 100644 tests/PRActionData/TestProcessPr.test_revert.json delete mode 100644 tests/PRActionData/TestProcessPr.test_sign_core.json delete mode 100644 tests/PRActionData/TestProcessPr.test_sign_reject.json delete mode 100644 tests/PRActionData/TestProcessPr.test_test_params.json delete mode 100644 tests/PRActionData/TestProcessPr.test_tests_rejected.json delete mode 100644 tests/PRActionData/TestProcessPr.test_too_many_commits.json delete mode 100644 tests/PRActionData/TestProcessPr.test_too_many_files.json delete mode 100644 tests/PRActionData/TestProcessPr.test_type_invalid.json delete mode 100644 tests/PRActionData/TestProcessPr.test_type_valid.json delete mode 100644 tests/PRActionData/TestProcessPr.test_unassign.json delete mode 100644 tests/PRActionData/TestProcessPr.test_unhold.json delete mode 100644 tests/PRActionData/TestProcessPr.test_urgent.json delete mode 100644 tests/PRActionData/TestProcessPr.test_valid_type.json delete mode 100644 tests/PRActionData/TestProcessPr.test_warn_many_files.json create mode 100644 tests/PRActionData/test_abort_command.json create mode 100644 tests/PRActionData/test_abort_ignored_already_aborted.json create mode 100644 tests/PRActionData/test_abort_ignored_no_pending.json create mode 100644 tests/PRActionData/test_abort_test_command.json create mode 100644 tests/PRActionData/test_add_then_remove_same_label.json create mode 100644 tests/PRActionData/test_allow_test_rights.json create mode 100644 tests/PRActionData/test_assign_category.json create mode 100644 tests/PRActionData/test_assign_category_with_hyphen.json create mode 100644 tests/PRActionData/test_assign_from_package.json create mode 100644 tests/PRActionData/test_assign_mixed_valid_invalid.json create mode 100644 tests/PRActionData/test_assign_multiple_categories.json create mode 100644 tests/PRActionData/test_backport_command.json create mode 100644 tests/PRActionData/test_basic_approval.json create mode 100644 tests/PRActionData/test_basic_test_trigger.json create mode 100644 tests/PRActionData/test_bot_code_checks_fail.json create mode 100644 tests/PRActionData/test_bot_code_checks_pass.json create mode 100644 tests/PRActionData/test_bot_comment_ignored.json create mode 100644 tests/PRActionData/test_bot_hold_command.json create mode 100644 tests/PRActionData/test_bot_mention_invalid_command.json create mode 100644 tests/PRActionData/test_build_command_basic.json create mode 100644 tests/PRActionData/test_build_processed_if_no_bot_reaction.json create mode 100644 tests/PRActionData/test_build_skipped_if_has_bot_reaction.json create mode 100644 tests/PRActionData/test_build_then_test_last_one_wins.json create mode 100644 tests/PRActionData/test_cache_creation.json create mode 100644 tests/PRActionData/test_category_specific_approval.json create mode 100644 tests/PRActionData/test_clean_squash_preserves_l2_signatures.json create mode 100644 tests/PRActionData/test_clean_squash_preserves_l2_signatures_after.json create mode 100644 tests/PRActionData/test_close_command.json create mode 100644 tests/PRActionData/test_cmsbuild_prefix_removal.json create mode 100644 tests/PRActionData/test_code_checks_basic.json create mode 100644 tests/PRActionData/test_code_checks_skipped_pending.json create mode 100644 tests/PRActionData/test_code_checks_with_tool.json create mode 100644 tests/PRActionData/test_comma_separated_labels.json create mode 100644 tests/PRActionData/test_different_workflows_last_one_wins.json create mode 100644 tests/PRActionData/test_dirty_squash_resets_all_l2_signatures.json create mode 100644 tests/PRActionData/test_dirty_squash_resets_all_l2_signatures_after.json create mode 100644 tests/PRActionData/test_duplicate_test_commands_deduplicated.json create mode 100644 tests/PRActionData/test_empty_comment.json create mode 100644 tests/PRActionData/test_enable_gpu_tests.json create mode 100644 tests/PRActionData/test_enable_multiple_tests.json create mode 100644 tests/PRActionData/test_enable_none_disables_tests.json create mode 100644 tests/PRActionData/test_hold_command.json create mode 100644 tests/PRActionData/test_ignore_tests_ib_failure.json create mode 100644 tests/PRActionData/test_ignore_tests_no_effect.json create mode 100644 tests/PRActionData/test_ignore_tests_no_tests.json create mode 100644 tests/PRActionData/test_ignore_tests_rejected.json create mode 100644 tests/PRActionData/test_invalid_label_in_comma_list.json create mode 100644 tests/PRActionData/test_invalid_type_label.json create mode 100644 tests/PRActionData/test_issue_skips_pr_only_commands.json create mode 100644 tests/PRActionData/test_l2_membership_change.json create mode 100644 tests/PRActionData/test_merge_when_ready.json create mode 100644 tests/PRActionData/test_minus_code_checks_queues_status.json create mode 100644 tests/PRActionData/test_minus_code_checks_rejected_on_second_run.json create mode 100644 tests/PRActionData/test_minus_prefix_removes_label.json create mode 100644 tests/PRActionData/test_mixed_add_remove_labels.json create mode 100644 tests/PRActionData/test_mixed_squash_resets_only_changed_file_signatures.json create mode 100644 tests/PRActionData/test_mixed_squash_resets_only_changed_file_signatures_after.json create mode 100644 tests/PRActionData/test_mtype_labels_accumulate.json create mode 100644 tests/PRActionData/test_multiple_files_multiple_categories.json create mode 100644 tests/PRActionData/test_new_pr_initialization.json create mode 100644 tests/PRActionData/test_no_bot_mention_invalid_command.json create mode 100644 tests/PRActionData/test_non_command_comment.json create mode 100644 tests/PRActionData/test_orp_unhold_all.json create mode 100644 tests/PRActionData/test_please_prefix_removal.json create mode 100644 tests/PRActionData/test_plus_code_checks_approved_on_second_run.json create mode 100644 tests/PRActionData/test_plus_code_checks_queues_status.json create mode 100644 tests/PRActionData/test_plus_prefix_adds_label.json create mode 100644 tests/PRActionData/test_pr_with_cms_bot_tag_processed_with_force.json create mode 100644 tests/PRActionData/test_pr_with_cms_bot_tag_skipped.json create mode 100644 tests/PRActionData/test_rejection.json create mode 100644 tests/PRActionData/test_remove_then_add_same_label.json create mode 100644 tests/PRActionData/test_reopen_command.json create mode 100644 tests/PRActionData/test_retrigger_after_tests_failed.json create mode 100644 tests/PRActionData/test_retrigger_different_arch.json create mode 100644 tests/PRActionData/test_retrigger_while_tests_running.json create mode 100644 tests/PRActionData/test_same_workflows_different_order_last_wins.json create mode 100644 tests/PRActionData/test_signature_invalidation_on_file_change.json create mode 100644 tests/PRActionData/test_signature_locked_after_commit.json create mode 100644 tests/PRActionData/test_signature_not_locked_before_commit.json create mode 100644 tests/PRActionData/test_test_blocked_by_missing_signature.json create mode 100644 tests/PRActionData/test_test_command_with_workflows.json create mode 100644 tests/PRActionData/test_test_processed_if_jenkins_status_different.json create mode 100644 tests/PRActionData/test_test_processed_if_no_jenkins_status.json create mode 100644 tests/PRActionData/test_test_skipped_if_jenkins_status_matches.json create mode 100644 tests/PRActionData/test_test_then_build_last_one_wins.json create mode 100644 tests/PRActionData/test_test_with_params.json create mode 100644 tests/PRActionData/test_type_and_mtype_together.json create mode 100644 tests/PRActionData/test_type_command_adds_label.json create mode 100644 tests/PRActionData/test_type_label_replaces_previous.json create mode 100644 tests/PRActionData/test_unassign_category.json create mode 100644 tests/PRActionData/test_unassign_invalid_category.json create mode 100644 tests/PRActionData/test_unassign_multiple_categories.json create mode 100644 tests/PRActionData/test_unhold_same_category.json create mode 100644 tests/PRActionData/test_urgent_command.json create mode 100644 tests/PRActionData/test_user_not_in_l2.json create mode 100644 tests/PRActionData/test_welcome_message_author.json create mode 100644 tests/PRActionData_integration/test_abort.json create mode 100644 tests/PRActionData_integration/test_ack_many_files.json create mode 100644 tests/PRActionData_integration/test_assign.json create mode 100644 tests/PRActionData_integration/test_assign_from.json create mode 100644 tests/PRActionData_integration/test_assign_from_invalid.json create mode 100644 tests/PRActionData_integration/test_assign_from_with_label.json create mode 100644 tests/PRActionData_integration/test_backport.json create mode 100644 tests/PRActionData_integration/test_backport_already_seen.json create mode 100644 tests/PRActionData_integration/test_backport_ok.json create mode 100644 tests/PRActionData_integration/test_build_only.json create mode 100644 tests/PRActionData_integration/test_close.json create mode 100644 tests/PRActionData_integration/test_cmsdist_start_tests.json create mode 100644 tests/PRActionData_integration/test_code_check_approved.json create mode 100644 tests/PRActionData_integration/test_code_checks_with.json create mode 100644 tests/PRActionData_integration/test_create_repo.json create mode 100644 tests/PRActionData_integration/test_draft_pr_ask_ready.json create mode 100644 tests/PRActionData_integration/test_draft_pr_assign.json create mode 100644 tests/PRActionData_integration/test_draft_pr_fully_signed.json create mode 100644 tests/PRActionData_integration/test_draft_pr_opened.json create mode 100644 tests/PRActionData_integration/test_draft_pr_ready.json create mode 100644 tests/PRActionData_integration/test_draft_pr_start_test.json create mode 100644 tests/PRActionData_integration/test_draft_pr_updated.json create mode 100644 tests/PRActionData_integration/test_empty_pr.json create mode 100644 tests/PRActionData_integration/test_enable_none.json create mode 100644 tests/PRActionData_integration/test_grant.json create mode 100644 tests/PRActionData_integration/test_hold.json create mode 100644 tests/PRActionData_integration/test_ignore_rejected_invalid.json create mode 100644 tests/PRActionData_integration/test_ignore_rejected_valid.json create mode 100644 tests/PRActionData_integration/test_invalid_test_params.json create mode 100644 tests/PRActionData_integration/test_invalid_type.json create mode 100644 tests/PRActionData_integration/test_many_commits_ok.json create mode 100644 tests/PRActionData_integration/test_many_commits_warn.json create mode 100644 tests/PRActionData_integration/test_merge_pr.json create mode 100644 tests/PRActionData_integration/test_new_issue.json create mode 100644 tests/PRActionData_integration/test_new_pr.json create mode 100644 tests/PRActionData_integration/test_orp_issue.json create mode 100644 tests/PRActionData_integration/test_test_all_params.json create mode 100644 tests/PRActionData_integration/test_too_many_commits.json delete mode 100644 tests/ReplayData/TestProcessPr.test_abort.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_ack_many_files.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_assign.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_assign_from.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_assign_from_invalid.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_assign_from_with_label.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_assign_legacy_cat.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_autoassign_legacy_cat.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_backport.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_backport_already_seen.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_backport_ok.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_build_only.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_cache_add_missing_items.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_clean_squash.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_close.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_cmsdist_start_tests.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_code_check_approved.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_code_checks_with.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_convert_cache.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_create_compressed_cache.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_create_repo.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_create_split_cache.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_dirty_squash.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_draft_pr_ask_ready.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_draft_pr_assign.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_draft_pr_fully_signed.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_draft_pr_opened.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_draft_pr_ready.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_draft_pr_start_test.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_draft_pr_updated.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_empty_pr.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_enable_none.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_future_commit.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_get_backported_pr.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_grant.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_hold.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_ignore_rejected_invalid.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_ignore_rejected_valid.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_ignore_sign.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_ignore_smth.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_invalid_test_params.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_invalid_type.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_many_commits.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_many_commits_ok.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_many_commits_warn.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_merge_pr.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_new_cmsdist_pr.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_new_issue.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_new_pr.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_orp_issue.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_partial_reset.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_partial_reset_dirty_squash.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_please_test_missing_repo.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_pr_develop_branch.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_preserve_legacy_cat.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_read_compressed_cache.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_read_split_cache.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_remove_type.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_reopen.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_reset_signature.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_revert.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_run_test_params.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_sign_core.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_sign_reject.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_start_tests.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_test_all_params.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_test_for_arch.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_test_for_quearch.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_test_for_queue.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_test_params.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_test_using_addpkg.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_test_using_full.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_test_with_pr.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_test_workflow.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_testparams_all_params.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_tests_passed.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_tests_rejected.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_too_many_commits.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_too_many_files.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_type_invalid.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_type_valid.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_unassign.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_unhold.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_urgent.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_valid_type.txt delete mode 100644 tests/ReplayData/TestProcessPr.test_warn_many_files.txt create mode 100644 tests/ReplayData/test_abort_command/CommitCombinedStatus_org_repo_commit123.json create mode 100644 tests/ReplayData/test_abort_command/IssueComments_1.json create mode 100644 tests/ReplayData/test_abort_command/Issue_1.json create mode 100644 tests/ReplayData/test_abort_command/PullRequest_1.json create mode 100644 tests/ReplayData/test_abort_command/Repository_org_repo.json create mode 100644 tests/ReplayData/test_abort_ignored_already_aborted/CommitCombinedStatus_org_repo_commit123.json create mode 100644 tests/ReplayData/test_abort_ignored_already_aborted/IssueComments_1.json create mode 100644 tests/ReplayData/test_abort_ignored_already_aborted/Issue_1.json create mode 100644 tests/ReplayData/test_abort_ignored_already_aborted/PullRequest_1.json create mode 100644 tests/ReplayData/test_abort_ignored_already_aborted/Repository_org_repo.json create mode 100644 tests/ReplayData/test_abort_ignored_no_pending/CommitCombinedStatus_org_repo_commit123.json create mode 100644 tests/ReplayData/test_abort_ignored_no_pending/IssueComments_1.json create mode 100644 tests/ReplayData/test_abort_ignored_no_pending/Issue_1.json create mode 100644 tests/ReplayData/test_abort_ignored_no_pending/PullRequest_1.json create mode 100644 tests/ReplayData/test_abort_ignored_no_pending/Repository_org_repo.json create mode 100644 tests/ReplayData/test_abort_test_command/CommitCombinedStatus_org_repo_commit123.json create mode 100644 tests/ReplayData/test_abort_test_command/IssueComments_1.json create mode 100644 tests/ReplayData/test_abort_test_command/Issue_1.json create mode 100644 tests/ReplayData/test_abort_test_command/PullRequest_1.json create mode 100644 tests/ReplayData/test_abort_test_command/Repository_org_repo.json delete mode 100644 tests/ReplayData/test_ack_many_files.json create mode 100644 tests/ReplayData/test_add_then_remove_same_label/IssueComments_1.json create mode 100644 tests/ReplayData/test_add_then_remove_same_label/Issue_1.json create mode 100644 tests/ReplayData/test_add_then_remove_same_label/PullRequest_1.json create mode 100644 tests/ReplayData/test_add_then_remove_same_label/Repository_org_repo.json create mode 100644 tests/ReplayData/test_assign_category/IssueComments_1.json create mode 100644 tests/ReplayData/test_assign_category/Issue_1.json create mode 100644 tests/ReplayData/test_assign_category/PullRequest_1.json create mode 100644 tests/ReplayData/test_assign_category/Repository_org_repo.json create mode 100644 tests/ReplayData/test_assign_category_with_hyphen/IssueComments_1.json create mode 100644 tests/ReplayData/test_assign_category_with_hyphen/Issue_1.json create mode 100644 tests/ReplayData/test_assign_category_with_hyphen/PullRequest_1.json create mode 100644 tests/ReplayData/test_assign_category_with_hyphen/Repository_org_repo.json create mode 100644 tests/ReplayData/test_assign_from_package/IssueComments_1.json create mode 100644 tests/ReplayData/test_assign_from_package/Issue_1.json create mode 100644 tests/ReplayData/test_assign_from_package/PullRequest_1.json create mode 100644 tests/ReplayData/test_assign_from_package/Repository_org_repo.json create mode 100644 tests/ReplayData/test_assign_mixed_valid_invalid/IssueComments_1.json create mode 100644 tests/ReplayData/test_assign_mixed_valid_invalid/Issue_1.json create mode 100644 tests/ReplayData/test_assign_mixed_valid_invalid/PullRequest_1.json create mode 100644 tests/ReplayData/test_assign_mixed_valid_invalid/Repository_org_repo.json create mode 100644 tests/ReplayData/test_assign_multiple_categories/IssueComments_1.json create mode 100644 tests/ReplayData/test_assign_multiple_categories/Issue_1.json create mode 100644 tests/ReplayData/test_assign_multiple_categories/PullRequest_1.json create mode 100644 tests/ReplayData/test_assign_multiple_categories/Repository_org_repo.json create mode 100644 tests/ReplayData/test_basic_approval/IssueComments_1.json create mode 100644 tests/ReplayData/test_basic_approval/Issue_1.json create mode 100644 tests/ReplayData/test_basic_approval/PullRequest_1.json create mode 100644 tests/ReplayData/test_basic_approval/Repository_org_repo.json create mode 100644 tests/ReplayData/test_basic_test_trigger/IssueComments_1.json create mode 100644 tests/ReplayData/test_basic_test_trigger/Issue_1.json create mode 100644 tests/ReplayData/test_basic_test_trigger/PullRequest_1.json create mode 100644 tests/ReplayData/test_basic_test_trigger/Repository_org_repo.json create mode 100644 tests/ReplayData/test_bot_category_specific_approval/IssueComments_1.json create mode 100644 tests/ReplayData/test_bot_category_specific_approval/Issue_1.json create mode 100644 tests/ReplayData/test_bot_category_specific_approval/PullRequest_1.json create mode 100644 tests/ReplayData/test_bot_category_specific_approval/Repository_org_repo.json create mode 100644 tests/ReplayData/test_bot_ci_approval/IssueComments_1.json create mode 100644 tests/ReplayData/test_bot_ci_approval/Issue_1.json create mode 100644 tests/ReplayData/test_bot_ci_approval/PullRequest_1.json create mode 100644 tests/ReplayData/test_bot_ci_approval/Repository_org_repo.json create mode 100644 tests/ReplayData/test_bot_code_checks_fail/IssueComments_1.json create mode 100644 tests/ReplayData/test_bot_code_checks_fail/Issue_1.json create mode 100644 tests/ReplayData/test_bot_code_checks_fail/PullRequest_1.json create mode 100644 tests/ReplayData/test_bot_code_checks_fail/Repository_org_repo.json create mode 100644 tests/ReplayData/test_bot_code_checks_pass/IssueComments_1.json create mode 100644 tests/ReplayData/test_bot_code_checks_pass/Issue_1.json create mode 100644 tests/ReplayData/test_bot_code_checks_pass/PullRequest_1.json create mode 100644 tests/ReplayData/test_bot_code_checks_pass/Repository_org_repo.json create mode 100644 tests/ReplayData/test_bot_comment_ignored/IssueComments_1.json create mode 100644 tests/ReplayData/test_bot_comment_ignored/Issue_1.json create mode 100644 tests/ReplayData/test_bot_comment_ignored/PullRequest_1.json create mode 100644 tests/ReplayData/test_bot_comment_ignored/Repository_org_repo.json create mode 100644 tests/ReplayData/test_bot_comments_processed_like_normal_users/IssueComments_1.json create mode 100644 tests/ReplayData/test_bot_comments_processed_like_normal_users/Issue_1.json create mode 100644 tests/ReplayData/test_bot_comments_processed_like_normal_users/PullRequest_1.json create mode 100644 tests/ReplayData/test_bot_comments_processed_like_normal_users/Repository_org_repo.json create mode 100644 tests/ReplayData/test_bot_hold_command/IssueComments_1.json create mode 100644 tests/ReplayData/test_bot_hold_command/Issue_1.json create mode 100644 tests/ReplayData/test_bot_hold_command/PullRequest_1.json create mode 100644 tests/ReplayData/test_bot_hold_command/Repository_org_repo.json create mode 100644 tests/ReplayData/test_bot_mention_invalid_command/IssueComments_1.json create mode 100644 tests/ReplayData/test_bot_mention_invalid_command/Issue_1.json create mode 100644 tests/ReplayData/test_bot_mention_invalid_command/PullRequest_1.json create mode 100644 tests/ReplayData/test_bot_mention_invalid_command/Repository_org_repo.json create mode 100644 tests/ReplayData/test_bot_regular_comment_still_ignored/IssueComments_1.json create mode 100644 tests/ReplayData/test_bot_regular_comment_still_ignored/Issue_1.json create mode 100644 tests/ReplayData/test_bot_regular_comment_still_ignored/PullRequest_1.json create mode 100644 tests/ReplayData/test_bot_regular_comment_still_ignored/Repository_org_repo.json create mode 100644 tests/ReplayData/test_build_command_basic/IssueComments_1.json create mode 100644 tests/ReplayData/test_build_command_basic/Issue_1.json create mode 100644 tests/ReplayData/test_build_command_basic/PullRequest_1.json create mode 100644 tests/ReplayData/test_build_command_basic/Repository_org_repo.json create mode 100644 tests/ReplayData/test_build_processed_if_no_bot_reaction/IssueComments_1.json create mode 100644 tests/ReplayData/test_build_processed_if_no_bot_reaction/Issue_1.json create mode 100644 tests/ReplayData/test_build_processed_if_no_bot_reaction/PullRequest_1.json create mode 100644 tests/ReplayData/test_build_processed_if_no_bot_reaction/Repository_org_repo.json create mode 100644 tests/ReplayData/test_build_skipped_if_has_bot_reaction/IssueComments_1.json create mode 100644 tests/ReplayData/test_build_skipped_if_has_bot_reaction/Issue_1.json create mode 100644 tests/ReplayData/test_build_skipped_if_has_bot_reaction/PullRequest_1.json create mode 100644 tests/ReplayData/test_build_skipped_if_has_bot_reaction/Repository_org_repo.json create mode 100644 tests/ReplayData/test_build_then_test_last_one_wins/IssueComments_1.json create mode 100644 tests/ReplayData/test_build_then_test_last_one_wins/Issue_1.json create mode 100644 tests/ReplayData/test_build_then_test_last_one_wins/PullRequest_1.json create mode 100644 tests/ReplayData/test_build_then_test_last_one_wins/Repository_org_repo.json create mode 100644 tests/ReplayData/test_cache_creation/Issue_1.json create mode 100644 tests/ReplayData/test_cache_creation/PullRequest_1.json create mode 100644 tests/ReplayData/test_cache_creation/Repository_org_repo.json create mode 100644 tests/ReplayData/test_category_specific_approval/IssueComments_1.json create mode 100644 tests/ReplayData/test_category_specific_approval/Issue_1.json create mode 100644 tests/ReplayData/test_category_specific_approval/PullRequest_1.json create mode 100644 tests/ReplayData/test_category_specific_approval/Repository_org_repo.json create mode 100644 tests/ReplayData/test_clean_squash_preserves_l2_signatures/IssueComments_1.json create mode 100644 tests/ReplayData/test_clean_squash_preserves_l2_signatures/Issue_1.json create mode 100644 tests/ReplayData/test_clean_squash_preserves_l2_signatures/PullRequest_1.json create mode 100644 tests/ReplayData/test_clean_squash_preserves_l2_signatures/Repository_org_repo.json create mode 100644 tests/ReplayData/test_clean_squash_preserves_l2_signatures_after/IssueComments_1.json create mode 100644 tests/ReplayData/test_clean_squash_preserves_l2_signatures_after/Issue_1.json create mode 100644 tests/ReplayData/test_clean_squash_preserves_l2_signatures_after/PullRequest_1.json create mode 100644 tests/ReplayData/test_clean_squash_preserves_l2_signatures_after/Repository_org_repo.json create mode 100644 tests/ReplayData/test_cmsbuild_prefix_removal/IssueComments_1.json create mode 100644 tests/ReplayData/test_cmsbuild_prefix_removal/Issue_1.json create mode 100644 tests/ReplayData/test_cmsbuild_prefix_removal/PullRequest_1.json create mode 100644 tests/ReplayData/test_cmsbuild_prefix_removal/Repository_org_repo.json create mode 100644 tests/ReplayData/test_code_checks_basic/CommitCombinedStatus_org_repo_commit123.json create mode 100644 tests/ReplayData/test_code_checks_basic/IssueComments_1.json create mode 100644 tests/ReplayData/test_code_checks_basic/Issue_1.json create mode 100644 tests/ReplayData/test_code_checks_basic/PullRequest_1.json create mode 100644 tests/ReplayData/test_code_checks_basic/Repository_org_repo.json create mode 100644 tests/ReplayData/test_code_checks_skipped_pending/CommitCombinedStatus_org_repo_commit123.json create mode 100644 tests/ReplayData/test_code_checks_skipped_pending/IssueComments_1.json create mode 100644 tests/ReplayData/test_code_checks_skipped_pending/Issue_1.json create mode 100644 tests/ReplayData/test_code_checks_skipped_pending/PullRequest_1.json create mode 100644 tests/ReplayData/test_code_checks_skipped_pending/Repository_org_repo.json create mode 100644 tests/ReplayData/test_code_checks_with_tool/CommitCombinedStatus_org_repo_commit123.json create mode 100644 tests/ReplayData/test_code_checks_with_tool/IssueComments_1.json create mode 100644 tests/ReplayData/test_code_checks_with_tool/Issue_1.json create mode 100644 tests/ReplayData/test_code_checks_with_tool/PullRequest_1.json create mode 100644 tests/ReplayData/test_code_checks_with_tool/Repository_org_repo.json create mode 100644 tests/ReplayData/test_comma_separated_labels/IssueComments_1.json create mode 100644 tests/ReplayData/test_comma_separated_labels/Issue_1.json create mode 100644 tests/ReplayData/test_comma_separated_labels/PullRequest_1.json create mode 100644 tests/ReplayData/test_comma_separated_labels/Repository_org_repo.json delete mode 100644 tests/ReplayData/test_create_compressed_cache.json delete mode 100644 tests/ReplayData/test_create_split_cache.json create mode 100644 tests/ReplayData/test_different_verb_not_deduplicated/IssueComments_1.json create mode 100644 tests/ReplayData/test_different_verb_not_deduplicated/Issue_1.json create mode 100644 tests/ReplayData/test_different_verb_not_deduplicated/PullRequest_1.json create mode 100644 tests/ReplayData/test_different_verb_not_deduplicated/Repository_org_repo.json create mode 100644 tests/ReplayData/test_different_workflows_last_one_wins/IssueComments_1.json create mode 100644 tests/ReplayData/test_different_workflows_last_one_wins/Issue_1.json create mode 100644 tests/ReplayData/test_different_workflows_last_one_wins/PullRequest_1.json create mode 100644 tests/ReplayData/test_different_workflows_last_one_wins/Repository_org_repo.json create mode 100644 tests/ReplayData/test_different_workflows_not_deduplicated/IssueComments_1.json create mode 100644 tests/ReplayData/test_different_workflows_not_deduplicated/Issue_1.json create mode 100644 tests/ReplayData/test_different_workflows_not_deduplicated/PullRequest_1.json create mode 100644 tests/ReplayData/test_different_workflows_not_deduplicated/Repository_org_repo.json create mode 100644 tests/ReplayData/test_dirty_squash_resets_all_l2_signatures/IssueComments_1.json create mode 100644 tests/ReplayData/test_dirty_squash_resets_all_l2_signatures/Issue_1.json create mode 100644 tests/ReplayData/test_dirty_squash_resets_all_l2_signatures/PullRequest_1.json create mode 100644 tests/ReplayData/test_dirty_squash_resets_all_l2_signatures/Repository_org_repo.json create mode 100644 tests/ReplayData/test_dirty_squash_resets_all_l2_signatures_after/IssueComments_1.json create mode 100644 tests/ReplayData/test_dirty_squash_resets_all_l2_signatures_after/Issue_1.json create mode 100644 tests/ReplayData/test_dirty_squash_resets_all_l2_signatures_after/PullRequest_1.json create mode 100644 tests/ReplayData/test_dirty_squash_resets_all_l2_signatures_after/Repository_org_repo.json create mode 100644 tests/ReplayData/test_duplicate_test_commands_deduplicated/IssueComments_1.json create mode 100644 tests/ReplayData/test_duplicate_test_commands_deduplicated/Issue_1.json create mode 100644 tests/ReplayData/test_duplicate_test_commands_deduplicated/PullRequest_1.json create mode 100644 tests/ReplayData/test_duplicate_test_commands_deduplicated/Repository_org_repo.json create mode 100644 tests/ReplayData/test_empty_comment/IssueComments_1.json create mode 100644 tests/ReplayData/test_empty_comment/Issue_1.json create mode 100644 tests/ReplayData/test_empty_comment/PullRequest_1.json create mode 100644 tests/ReplayData/test_empty_comment/Repository_org_repo.json create mode 100644 tests/ReplayData/test_enable_gpu_tests/IssueComments_1.json create mode 100644 tests/ReplayData/test_enable_gpu_tests/Issue_1.json create mode 100644 tests/ReplayData/test_enable_gpu_tests/PullRequest_1.json create mode 100644 tests/ReplayData/test_enable_gpu_tests/Repository_org_repo.json create mode 100644 tests/ReplayData/test_enable_multiple_tests/IssueComments_1.json create mode 100644 tests/ReplayData/test_enable_multiple_tests/Issue_1.json create mode 100644 tests/ReplayData/test_enable_multiple_tests/PullRequest_1.json create mode 100644 tests/ReplayData/test_enable_multiple_tests/Repository_org_repo.json create mode 100644 tests/ReplayData/test_enable_none_disables_tests/IssueComments_1.json create mode 100644 tests/ReplayData/test_enable_none_disables_tests/Issue_1.json create mode 100644 tests/ReplayData/test_enable_none_disables_tests/PullRequest_1.json create mode 100644 tests/ReplayData/test_enable_none_disables_tests/Repository_org_repo.json create mode 100644 tests/ReplayData/test_hold_command/IssueComments_1.json create mode 100644 tests/ReplayData/test_hold_command/Issue_1.json create mode 100644 tests/ReplayData/test_hold_command/PullRequest_1.json create mode 100644 tests/ReplayData/test_hold_command/Repository_org_repo.json create mode 100644 tests/ReplayData/test_ignore_tests_ib_failure/CommitCombinedStatus_org_repo_commit123.json create mode 100644 tests/ReplayData/test_ignore_tests_ib_failure/IssueComments_1.json create mode 100644 tests/ReplayData/test_ignore_tests_ib_failure/Issue_1.json create mode 100644 tests/ReplayData/test_ignore_tests_ib_failure/PullRequest_1.json create mode 100644 tests/ReplayData/test_ignore_tests_ib_failure/Repository_org_repo.json create mode 100644 tests/ReplayData/test_ignore_tests_no_effect/CommitCombinedStatus_org_repo_commit123.json create mode 100644 tests/ReplayData/test_ignore_tests_no_effect/IssueComments_1.json create mode 100644 tests/ReplayData/test_ignore_tests_no_effect/Issue_1.json create mode 100644 tests/ReplayData/test_ignore_tests_no_effect/PullRequest_1.json create mode 100644 tests/ReplayData/test_ignore_tests_no_effect/Repository_org_repo.json create mode 100644 tests/ReplayData/test_ignore_tests_no_tests/IssueComments_1.json create mode 100644 tests/ReplayData/test_ignore_tests_no_tests/Issue_1.json create mode 100644 tests/ReplayData/test_ignore_tests_no_tests/PullRequest_1.json create mode 100644 tests/ReplayData/test_ignore_tests_no_tests/Repository_org_repo.json create mode 100644 tests/ReplayData/test_ignore_tests_rejected/CommitCombinedStatus_org_repo_commit123.json create mode 100644 tests/ReplayData/test_ignore_tests_rejected/IssueComments_1.json create mode 100644 tests/ReplayData/test_ignore_tests_rejected/Issue_1.json create mode 100644 tests/ReplayData/test_ignore_tests_rejected/PullRequest_1.json create mode 100644 tests/ReplayData/test_ignore_tests_rejected/Repository_org_repo.json create mode 100644 tests/ReplayData/test_invalid_label_in_comma_list/IssueComments_1.json create mode 100644 tests/ReplayData/test_invalid_label_in_comma_list/Issue_1.json create mode 100644 tests/ReplayData/test_invalid_label_in_comma_list/PullRequest_1.json create mode 100644 tests/ReplayData/test_invalid_label_in_comma_list/Repository_org_repo.json create mode 100644 tests/ReplayData/test_invalid_type_label/IssueComments_1.json create mode 100644 tests/ReplayData/test_invalid_type_label/Issue_1.json create mode 100644 tests/ReplayData/test_invalid_type_label/PullRequest_1.json create mode 100644 tests/ReplayData/test_invalid_type_label/Repository_org_repo.json create mode 100644 tests/ReplayData/test_issue_skips_pr_only_commands/IssueComments_1.json create mode 100644 tests/ReplayData/test_issue_skips_pr_only_commands/Issue_1.json create mode 100644 tests/ReplayData/test_issue_skips_pr_only_commands/PullRequest_1.json create mode 100644 tests/ReplayData/test_issue_skips_pr_only_commands/Repository_org_repo.json create mode 100644 tests/ReplayData/test_l2_membership_change/IssueComments_1.json create mode 100644 tests/ReplayData/test_l2_membership_change/Issue_1.json create mode 100644 tests/ReplayData/test_l2_membership_change/PullRequest_1.json create mode 100644 tests/ReplayData/test_l2_membership_change/Repository_org_repo.json create mode 100644 tests/ReplayData/test_merge_when_ready/IssueComments_1.json create mode 100644 tests/ReplayData/test_merge_when_ready/Issue_1.json create mode 100644 tests/ReplayData/test_merge_when_ready/PullRequest_1.json create mode 100644 tests/ReplayData/test_merge_when_ready/Repository_org_repo.json create mode 100644 tests/ReplayData/test_minus_category_with_hyphen/IssueComments_1.json create mode 100644 tests/ReplayData/test_minus_category_with_hyphen/Issue_1.json create mode 100644 tests/ReplayData/test_minus_category_with_hyphen/PullRequest_1.json create mode 100644 tests/ReplayData/test_minus_category_with_hyphen/Repository_org_repo.json create mode 100644 tests/ReplayData/test_minus_code_checks_queues_status/IssueComments_1.json create mode 100644 tests/ReplayData/test_minus_code_checks_queues_status/Issue_1.json create mode 100644 tests/ReplayData/test_minus_code_checks_queues_status/PullRequest_1.json create mode 100644 tests/ReplayData/test_minus_code_checks_queues_status/Repository_org_repo.json create mode 100644 tests/ReplayData/test_minus_code_checks_rejected_on_second_run/CommitCombinedStatus_org_repo_commit123.json create mode 100644 tests/ReplayData/test_minus_code_checks_rejected_on_second_run/IssueComments_1.json create mode 100644 tests/ReplayData/test_minus_code_checks_rejected_on_second_run/Issue_1.json create mode 100644 tests/ReplayData/test_minus_code_checks_rejected_on_second_run/PullRequest_1.json create mode 100644 tests/ReplayData/test_minus_code_checks_rejected_on_second_run/Repository_org_repo.json create mode 100644 tests/ReplayData/test_minus_prefix_removes_label/IssueComments_1.json create mode 100644 tests/ReplayData/test_minus_prefix_removes_label/Issue_1.json create mode 100644 tests/ReplayData/test_minus_prefix_removes_label/PullRequest_1.json create mode 100644 tests/ReplayData/test_minus_prefix_removes_label/Repository_org_repo.json create mode 100644 tests/ReplayData/test_mixed_add_remove_labels/IssueComments_1.json create mode 100644 tests/ReplayData/test_mixed_add_remove_labels/Issue_1.json create mode 100644 tests/ReplayData/test_mixed_add_remove_labels/PullRequest_1.json create mode 100644 tests/ReplayData/test_mixed_add_remove_labels/Repository_org_repo.json create mode 100644 tests/ReplayData/test_mixed_squash_resets_only_changed_file_signatures/IssueComments_1.json create mode 100644 tests/ReplayData/test_mixed_squash_resets_only_changed_file_signatures/Issue_1.json create mode 100644 tests/ReplayData/test_mixed_squash_resets_only_changed_file_signatures/PullRequest_1.json create mode 100644 tests/ReplayData/test_mixed_squash_resets_only_changed_file_signatures/Repository_org_repo.json create mode 100644 tests/ReplayData/test_mixed_squash_resets_only_changed_file_signatures_after/IssueComments_1.json create mode 100644 tests/ReplayData/test_mixed_squash_resets_only_changed_file_signatures_after/Issue_1.json create mode 100644 tests/ReplayData/test_mixed_squash_resets_only_changed_file_signatures_after/PullRequest_1.json create mode 100644 tests/ReplayData/test_mixed_squash_resets_only_changed_file_signatures_after/Repository_org_repo.json create mode 100644 tests/ReplayData/test_mtype_labels_accumulate/IssueComments_1.json create mode 100644 tests/ReplayData/test_mtype_labels_accumulate/Issue_1.json create mode 100644 tests/ReplayData/test_mtype_labels_accumulate/PullRequest_1.json create mode 100644 tests/ReplayData/test_mtype_labels_accumulate/Repository_org_repo.json create mode 100644 tests/ReplayData/test_multiple_files_multiple_categories/IssueComments_1.json create mode 100644 tests/ReplayData/test_multiple_files_multiple_categories/Issue_1.json create mode 100644 tests/ReplayData/test_multiple_files_multiple_categories/PullRequest_1.json create mode 100644 tests/ReplayData/test_multiple_files_multiple_categories/Repository_org_repo.json create mode 100644 tests/ReplayData/test_new_pr_initialization/Issue_1.json create mode 100644 tests/ReplayData/test_new_pr_initialization/PullRequest_1.json create mode 100644 tests/ReplayData/test_new_pr_initialization/Repository_org_repo.json create mode 100644 tests/ReplayData/test_no_bot_mention_invalid_command/IssueComments_1.json create mode 100644 tests/ReplayData/test_no_bot_mention_invalid_command/Issue_1.json create mode 100644 tests/ReplayData/test_no_bot_mention_invalid_command/PullRequest_1.json create mode 100644 tests/ReplayData/test_no_bot_mention_invalid_command/Repository_org_repo.json create mode 100644 tests/ReplayData/test_non_command_comment/IssueComments_1.json create mode 100644 tests/ReplayData/test_non_command_comment/Issue_1.json create mode 100644 tests/ReplayData/test_non_command_comment/PullRequest_1.json create mode 100644 tests/ReplayData/test_non_command_comment/Repository_org_repo.json create mode 100644 tests/ReplayData/test_orp_unhold_all/IssueComments_1.json create mode 100644 tests/ReplayData/test_orp_unhold_all/Issue_1.json create mode 100644 tests/ReplayData/test_orp_unhold_all/PullRequest_1.json create mode 100644 tests/ReplayData/test_orp_unhold_all/Repository_org_repo.json create mode 100644 tests/ReplayData/test_please_prefix_removal/IssueComments_1.json create mode 100644 tests/ReplayData/test_please_prefix_removal/Issue_1.json create mode 100644 tests/ReplayData/test_please_prefix_removal/PullRequest_1.json create mode 100644 tests/ReplayData/test_please_prefix_removal/Repository_org_repo.json create mode 100644 tests/ReplayData/test_plus_category_with_hyphen/IssueComments_1.json create mode 100644 tests/ReplayData/test_plus_category_with_hyphen/Issue_1.json create mode 100644 tests/ReplayData/test_plus_category_with_hyphen/PullRequest_1.json create mode 100644 tests/ReplayData/test_plus_category_with_hyphen/Repository_org_repo.json create mode 100644 tests/ReplayData/test_plus_code_checks_approved_on_second_run/CommitCombinedStatus_org_repo_commit123.json create mode 100644 tests/ReplayData/test_plus_code_checks_approved_on_second_run/IssueComments_1.json create mode 100644 tests/ReplayData/test_plus_code_checks_approved_on_second_run/Issue_1.json create mode 100644 tests/ReplayData/test_plus_code_checks_approved_on_second_run/PullRequest_1.json create mode 100644 tests/ReplayData/test_plus_code_checks_approved_on_second_run/Repository_org_repo.json create mode 100644 tests/ReplayData/test_plus_code_checks_queues_status/IssueComments_1.json create mode 100644 tests/ReplayData/test_plus_code_checks_queues_status/Issue_1.json create mode 100644 tests/ReplayData/test_plus_code_checks_queues_status/PullRequest_1.json create mode 100644 tests/ReplayData/test_plus_code_checks_queues_status/Repository_org_repo.json create mode 100644 tests/ReplayData/test_plus_prefix_adds_label/IssueComments_1.json create mode 100644 tests/ReplayData/test_plus_prefix_adds_label/Issue_1.json create mode 100644 tests/ReplayData/test_plus_prefix_adds_label/PullRequest_1.json create mode 100644 tests/ReplayData/test_plus_prefix_adds_label/Repository_org_repo.json create mode 100644 tests/ReplayData/test_pr_with_cms_bot_tag_processed_with_force/Issue_1.json create mode 100644 tests/ReplayData/test_pr_with_cms_bot_tag_processed_with_force/PullRequest_1.json create mode 100644 tests/ReplayData/test_pr_with_cms_bot_tag_processed_with_force/Repository_org_repo.json create mode 100644 tests/ReplayData/test_pr_with_cms_bot_tag_skipped/IssueComments_1.json create mode 100644 tests/ReplayData/test_pr_with_cms_bot_tag_skipped/Issue_1.json create mode 100644 tests/ReplayData/test_pr_with_cms_bot_tag_skipped/PullRequest_1.json create mode 100644 tests/ReplayData/test_pr_with_cms_bot_tag_skipped/Repository_org_repo.json delete mode 100644 tests/ReplayData/test_read_compressed_cache.json create mode 100644 tests/ReplayData/test_rejection/IssueComments_1.json create mode 100644 tests/ReplayData/test_rejection/Issue_1.json create mode 100644 tests/ReplayData/test_rejection/PullRequest_1.json create mode 100644 tests/ReplayData/test_rejection/Repository_org_repo.json create mode 100644 tests/ReplayData/test_remove_then_add_same_label/IssueComments_1.json create mode 100644 tests/ReplayData/test_remove_then_add_same_label/Issue_1.json create mode 100644 tests/ReplayData/test_remove_then_add_same_label/PullRequest_1.json create mode 100644 tests/ReplayData/test_remove_then_add_same_label/Repository_org_repo.json create mode 100644 tests/ReplayData/test_retrigger_after_tests_failed/CommitCombinedStatus_org_repo_commit123.json create mode 100644 tests/ReplayData/test_retrigger_after_tests_failed/IssueComments_1.json create mode 100644 tests/ReplayData/test_retrigger_after_tests_failed/Issue_1.json create mode 100644 tests/ReplayData/test_retrigger_after_tests_failed/PullRequest_1.json create mode 100644 tests/ReplayData/test_retrigger_after_tests_failed/Repository_org_repo.json create mode 100644 tests/ReplayData/test_retrigger_different_arch/CommitCombinedStatus_org_repo_commit123.json create mode 100644 tests/ReplayData/test_retrigger_different_arch/IssueComments_1.json create mode 100644 tests/ReplayData/test_retrigger_different_arch/Issue_1.json create mode 100644 tests/ReplayData/test_retrigger_different_arch/PullRequest_1.json create mode 100644 tests/ReplayData/test_retrigger_different_arch/Repository_org_repo.json create mode 100644 tests/ReplayData/test_retrigger_while_tests_running/CommitCombinedStatus_org_repo_commit123.json create mode 100644 tests/ReplayData/test_retrigger_while_tests_running/IssueComments_1.json create mode 100644 tests/ReplayData/test_retrigger_while_tests_running/Issue_1.json create mode 100644 tests/ReplayData/test_retrigger_while_tests_running/PullRequest_1.json create mode 100644 tests/ReplayData/test_retrigger_while_tests_running/Repository_org_repo.json create mode 100644 tests/ReplayData/test_same_workflows_different_order_deduplicated/IssueComments_1.json create mode 100644 tests/ReplayData/test_same_workflows_different_order_deduplicated/Issue_1.json create mode 100644 tests/ReplayData/test_same_workflows_different_order_deduplicated/PullRequest_1.json create mode 100644 tests/ReplayData/test_same_workflows_different_order_deduplicated/Repository_org_repo.json create mode 100644 tests/ReplayData/test_same_workflows_different_order_last_wins/IssueComments_1.json create mode 100644 tests/ReplayData/test_same_workflows_different_order_last_wins/Issue_1.json create mode 100644 tests/ReplayData/test_same_workflows_different_order_last_wins/PullRequest_1.json create mode 100644 tests/ReplayData/test_same_workflows_different_order_last_wins/Repository_org_repo.json create mode 100644 tests/ReplayData/test_signature_invalidation_on_file_change/IssueComments_1.json create mode 100644 tests/ReplayData/test_signature_invalidation_on_file_change/Issue_1.json create mode 100644 tests/ReplayData/test_signature_invalidation_on_file_change/PullRequest_1.json create mode 100644 tests/ReplayData/test_signature_invalidation_on_file_change/Repository_org_repo.json create mode 100644 tests/ReplayData/test_signature_locked_after_commit/IssueComments_1.json create mode 100644 tests/ReplayData/test_signature_locked_after_commit/Issue_1.json create mode 100644 tests/ReplayData/test_signature_locked_after_commit/PullRequest_1.json create mode 100644 tests/ReplayData/test_signature_locked_after_commit/Repository_org_repo.json create mode 100644 tests/ReplayData/test_signature_not_locked_before_commit/IssueComments_1.json create mode 100644 tests/ReplayData/test_signature_not_locked_before_commit/Issue_1.json create mode 100644 tests/ReplayData/test_signature_not_locked_before_commit/PullRequest_1.json create mode 100644 tests/ReplayData/test_signature_not_locked_before_commit/Repository_org_repo.json create mode 100644 tests/ReplayData/test_test_blocked_by_missing_signature/IssueComments_1.json create mode 100644 tests/ReplayData/test_test_blocked_by_missing_signature/Issue_1.json create mode 100644 tests/ReplayData/test_test_blocked_by_missing_signature/PullRequest_1.json create mode 100644 tests/ReplayData/test_test_blocked_by_missing_signature/Repository_org_repo.json create mode 100644 tests/ReplayData/test_test_command_with_workflows/IssueComments_1.json create mode 100644 tests/ReplayData/test_test_command_with_workflows/Issue_1.json create mode 100644 tests/ReplayData/test_test_command_with_workflows/PullRequest_1.json create mode 100644 tests/ReplayData/test_test_command_with_workflows/Repository_org_repo.json create mode 100644 tests/ReplayData/test_test_processed_if_jenkins_status_different/IssueComments_1.json create mode 100644 tests/ReplayData/test_test_processed_if_jenkins_status_different/Issue_1.json create mode 100644 tests/ReplayData/test_test_processed_if_jenkins_status_different/PullRequest_1.json create mode 100644 tests/ReplayData/test_test_processed_if_jenkins_status_different/Repository_org_repo.json create mode 100644 tests/ReplayData/test_test_processed_if_no_jenkins_status/IssueComments_1.json create mode 100644 tests/ReplayData/test_test_processed_if_no_jenkins_status/Issue_1.json create mode 100644 tests/ReplayData/test_test_processed_if_no_jenkins_status/PullRequest_1.json create mode 100644 tests/ReplayData/test_test_processed_if_no_jenkins_status/Repository_org_repo.json create mode 100644 tests/ReplayData/test_test_skipped_if_jenkins_status_matches/IssueComments_1.json create mode 100644 tests/ReplayData/test_test_skipped_if_jenkins_status_matches/Issue_1.json create mode 100644 tests/ReplayData/test_test_skipped_if_jenkins_status_matches/PullRequest_1.json create mode 100644 tests/ReplayData/test_test_skipped_if_jenkins_status_matches/Repository_org_repo.json create mode 100644 tests/ReplayData/test_test_then_build_last_one_wins/IssueComments_1.json create mode 100644 tests/ReplayData/test_test_then_build_last_one_wins/Issue_1.json create mode 100644 tests/ReplayData/test_test_then_build_last_one_wins/PullRequest_1.json create mode 100644 tests/ReplayData/test_test_then_build_last_one_wins/Repository_org_repo.json create mode 100644 tests/ReplayData/test_test_with_params/IssueComments_1.json create mode 100644 tests/ReplayData/test_test_with_params/Issue_1.json create mode 100644 tests/ReplayData/test_test_with_params/PullRequest_1.json create mode 100644 tests/ReplayData/test_test_with_params/Repository_org_repo.json delete mode 100644 tests/ReplayData/test_too_many_files.json create mode 100644 tests/ReplayData/test_type_and_mtype_together/IssueComments_1.json create mode 100644 tests/ReplayData/test_type_and_mtype_together/Issue_1.json create mode 100644 tests/ReplayData/test_type_and_mtype_together/PullRequest_1.json create mode 100644 tests/ReplayData/test_type_and_mtype_together/Repository_org_repo.json create mode 100644 tests/ReplayData/test_type_command_adds_label/IssueComments_1.json create mode 100644 tests/ReplayData/test_type_command_adds_label/Issue_1.json create mode 100644 tests/ReplayData/test_type_command_adds_label/PullRequest_1.json create mode 100644 tests/ReplayData/test_type_command_adds_label/Repository_org_repo.json create mode 100644 tests/ReplayData/test_type_label_replaces_previous/IssueComments_1.json create mode 100644 tests/ReplayData/test_type_label_replaces_previous/Issue_1.json create mode 100644 tests/ReplayData/test_type_label_replaces_previous/PullRequest_1.json create mode 100644 tests/ReplayData/test_type_label_replaces_previous/Repository_org_repo.json create mode 100644 tests/ReplayData/test_unassign_category/IssueComments_1.json create mode 100644 tests/ReplayData/test_unassign_category/Issue_1.json create mode 100644 tests/ReplayData/test_unassign_category/PullRequest_1.json create mode 100644 tests/ReplayData/test_unassign_category/Repository_org_repo.json create mode 100644 tests/ReplayData/test_unassign_invalid_category/IssueComments_1.json create mode 100644 tests/ReplayData/test_unassign_invalid_category/Issue_1.json create mode 100644 tests/ReplayData/test_unassign_invalid_category/PullRequest_1.json create mode 100644 tests/ReplayData/test_unassign_invalid_category/Repository_org_repo.json create mode 100644 tests/ReplayData/test_unassign_multiple_categories/IssueComments_1.json create mode 100644 tests/ReplayData/test_unassign_multiple_categories/Issue_1.json create mode 100644 tests/ReplayData/test_unassign_multiple_categories/PullRequest_1.json create mode 100644 tests/ReplayData/test_unassign_multiple_categories/Repository_org_repo.json create mode 100644 tests/ReplayData/test_unhold_same_category/IssueComments_1.json create mode 100644 tests/ReplayData/test_unhold_same_category/Issue_1.json create mode 100644 tests/ReplayData/test_unhold_same_category/PullRequest_1.json create mode 100644 tests/ReplayData/test_unhold_same_category/Repository_org_repo.json create mode 100644 tests/ReplayData/test_user_not_in_l2/IssueComments_1.json create mode 100644 tests/ReplayData/test_user_not_in_l2/Issue_1.json create mode 100644 tests/ReplayData/test_user_not_in_l2/PullRequest_1.json create mode 100644 tests/ReplayData/test_user_not_in_l2/Repository_org_repo.json delete mode 100644 tests/ReplayData/test_warn_many_files.json create mode 100644 tests/ReplayData_integration/test_abort/CommentReactions_2056930228.json create mode 100644 tests/ReplayData_integration/test_abort/CommitCombinedStatus_iarspider-cmssw_cmssw_dae848e38b8e387d7283a3e35818121487d9d76b.json create mode 100644 tests/ReplayData_integration/test_abort/GitCommit_iarspider-cmssw_cmssw_dae848e38b8e387d7283a3e35818121487d9d76b.json create mode 100644 tests/ReplayData_integration/test_abort/IssueComments_17.json create mode 100644 tests/ReplayData_integration/test_abort/Issue_17.json create mode 100644 tests/ReplayData_integration/test_abort/PullRequestCommits_17.json create mode 100644 tests/ReplayData_integration/test_abort/PullRequestFiles_17.json create mode 100644 tests/ReplayData_integration/test_abort/PullRequest_17.json create mode 100644 tests/ReplayData_integration/test_abort/Repository_iarspider-cmssw_cmssw.json create mode 100644 tests/ReplayData_integration/test_ack_many_files/CommitCombinedStatus_iarspider-cmssw_cmssw_b6db3e643d2bd16deee12590d1312a3addcd2d75.json create mode 100644 tests/ReplayData_integration/test_ack_many_files/Commit_iarspider-cmssw_cmssw_b6db3e643d2bd16deee12590d1312a3addcd2d75.json create mode 100644 tests/ReplayData_integration/test_ack_many_files/GitCommit_iarspider-cmssw_cmssw_b6db3e643d2bd16deee12590d1312a3addcd2d75.json create mode 100644 tests/ReplayData_integration/test_ack_many_files/IssueComments_38.json create mode 100644 tests/ReplayData_integration/test_ack_many_files/Issue_38.json create mode 100644 tests/ReplayData_integration/test_ack_many_files/PullRequestCommits_38.json create mode 100644 tests/ReplayData_integration/test_ack_many_files/PullRequestFiles_38.json create mode 100644 tests/ReplayData_integration/test_ack_many_files/PullRequest_38.json create mode 100644 tests/ReplayData_integration/test_ack_many_files/RepoIdPullRequestFiles_399376380_38.json create mode 100644 tests/ReplayData_integration/test_ack_many_files/Repository_iarspider-cmssw_cmssw.json create mode 100644 tests/ReplayData_integration/test_assign/CommitCombinedStatus_iarspider-cmssw_cmssw_dae848e38b8e387d7283a3e35818121487d9d76b.json create mode 100644 tests/ReplayData_integration/test_assign/GitCommit_iarspider-cmssw_cmssw_dae848e38b8e387d7283a3e35818121487d9d76b.json create mode 100644 tests/ReplayData_integration/test_assign/IssueComments_17.json create mode 100644 tests/ReplayData_integration/test_assign/Issue_17.json create mode 100644 tests/ReplayData_integration/test_assign/PullRequestCommits_17.json create mode 100644 tests/ReplayData_integration/test_assign/PullRequestFiles_17.json create mode 100644 tests/ReplayData_integration/test_assign/PullRequest_17.json create mode 100644 tests/ReplayData_integration/test_assign/Repository_iarspider-cmssw_cmssw.json create mode 100644 tests/ReplayData_integration/test_assign_from/IssueComments_27.json create mode 100644 tests/ReplayData_integration/test_assign_from/Issue_27.json create mode 100644 tests/ReplayData_integration/test_assign_from/Repository_iarspider-cmssw_cmssw.json create mode 100644 tests/ReplayData_integration/test_assign_from_invalid/IssueComments_27.json create mode 100644 tests/ReplayData_integration/test_assign_from_invalid/Issue_27.json create mode 100644 tests/ReplayData_integration/test_assign_from_invalid/Repository_iarspider-cmssw_cmssw.json create mode 100644 tests/ReplayData_integration/test_assign_from_with_label/IssueComments_27.json create mode 100644 tests/ReplayData_integration/test_assign_from_with_label/Issue_27.json create mode 100644 tests/ReplayData_integration/test_assign_from_with_label/Repository_iarspider-cmssw_cmssw.json create mode 100644 tests/ReplayData_integration/test_backport/CommitCombinedStatus_iarspider-cmssw_cmssw_551c95f59caff42369887b5fee86583fe2bff161.json create mode 100644 tests/ReplayData_integration/test_backport/Commit_iarspider-cmssw_cmssw_551c95f59caff42369887b5fee86583fe2bff161.json create mode 100644 tests/ReplayData_integration/test_backport/GitCommit_iarspider-cmssw_cmssw_551c95f59caff42369887b5fee86583fe2bff161.json create mode 100644 tests/ReplayData_integration/test_backport/IssueComments_26.json create mode 100644 tests/ReplayData_integration/test_backport/Issue_26.json create mode 100644 tests/ReplayData_integration/test_backport/Milestone_iarspider-cmssw_cmssw_4.json create mode 100644 tests/ReplayData_integration/test_backport/PullRequestCommits_26.json create mode 100644 tests/ReplayData_integration/test_backport/PullRequestFiles_26.json create mode 100644 tests/ReplayData_integration/test_backport/PullRequest_24.json create mode 100644 tests/ReplayData_integration/test_backport/PullRequest_26.json create mode 100644 tests/ReplayData_integration/test_backport/Repository_iarspider-cmssw_cmssw.json create mode 100644 tests/ReplayData_integration/test_backport_already_seen/CommitCombinedStatus_iarspider-cmssw_cmssw_551c95f59caff42369887b5fee86583fe2bff161.json create mode 100644 tests/ReplayData_integration/test_backport_already_seen/GitCommit_iarspider-cmssw_cmssw_551c95f59caff42369887b5fee86583fe2bff161.json create mode 100644 tests/ReplayData_integration/test_backport_already_seen/IssueComments_26.json create mode 100644 tests/ReplayData_integration/test_backport_already_seen/Issue_26.json create mode 100644 tests/ReplayData_integration/test_backport_already_seen/PullRequestCommits_26.json create mode 100644 tests/ReplayData_integration/test_backport_already_seen/PullRequestFiles_26.json create mode 100644 tests/ReplayData_integration/test_backport_already_seen/PullRequest_24.json create mode 100644 tests/ReplayData_integration/test_backport_already_seen/PullRequest_26.json create mode 100644 tests/ReplayData_integration/test_backport_already_seen/Repository_iarspider-cmssw_cmssw.json create mode 100644 tests/ReplayData_integration/test_backport_ok/CommitCombinedStatus_iarspider-cmssw_cmssw_5a76c5bd2fc93ef87eac8a48f5fc5816b01d7fc4.json create mode 100644 tests/ReplayData_integration/test_backport_ok/GitCommit_iarspider-cmssw_cmssw_5a76c5bd2fc93ef87eac8a48f5fc5816b01d7fc4.json create mode 100644 tests/ReplayData_integration/test_backport_ok/IssueComments_9.json create mode 100644 tests/ReplayData_integration/test_backport_ok/Issue_9.json create mode 100644 tests/ReplayData_integration/test_backport_ok/PullRequestCommits_9.json create mode 100644 tests/ReplayData_integration/test_backport_ok/PullRequestFiles_9.json create mode 100644 tests/ReplayData_integration/test_backport_ok/PullRequest_35.json create mode 100644 tests/ReplayData_integration/test_backport_ok/PullRequest_9.json create mode 100644 tests/ReplayData_integration/test_backport_ok/Repository_iarspider-cmssw_cmssw.json create mode 100644 tests/ReplayData_integration/test_build_only/CommentReactions_2872583904.json create mode 100644 tests/ReplayData_integration/test_build_only/CommitCombinedStatus_iarspider-cmssw_cmssw_06336c8884bcfbc516cc69fd99b0a161bb3a14d5.json create mode 100644 tests/ReplayData_integration/test_build_only/GitCommit_iarspider-cmssw_cmssw_06336c8884bcfbc516cc69fd99b0a161bb3a14d5.json create mode 100644 tests/ReplayData_integration/test_build_only/IssueComments_40.json create mode 100644 tests/ReplayData_integration/test_build_only/Issue_40.json create mode 100644 tests/ReplayData_integration/test_build_only/PullRequestCommits_40.json create mode 100644 tests/ReplayData_integration/test_build_only/PullRequestFiles_40.json create mode 100644 tests/ReplayData_integration/test_build_only/PullRequest_40.json create mode 100644 tests/ReplayData_integration/test_build_only/Repository_iarspider-cmssw_cmssw.json create mode 100644 tests/ReplayData_integration/test_close/CommitCombinedStatus_iarspider-cmssw_cmssw_dae848e38b8e387d7283a3e35818121487d9d76b.json create mode 100644 tests/ReplayData_integration/test_close/GitCommit_iarspider-cmssw_cmssw_dae848e38b8e387d7283a3e35818121487d9d76b.json create mode 100644 tests/ReplayData_integration/test_close/IssueComments_17.json create mode 100644 tests/ReplayData_integration/test_close/Issue_17.json create mode 100644 tests/ReplayData_integration/test_close/PullRequestCommits_17.json create mode 100644 tests/ReplayData_integration/test_close/PullRequestFiles_17.json create mode 100644 tests/ReplayData_integration/test_close/PullRequest_17.json create mode 100644 tests/ReplayData_integration/test_close/Repository_iarspider-cmssw_cmssw.json create mode 100644 tests/ReplayData_integration/test_cmsdist_start_tests/CommitCombinedStatus_iarspider-cmssw_cmsdist_97b8e6b89e86de19afb3a428f54f08313457374e.json create mode 100644 tests/ReplayData_integration/test_cmsdist_start_tests/GitCommit_iarspider-cmssw_cmsdist_97b8e6b89e86de19afb3a428f54f08313457374e.json create mode 100644 tests/ReplayData_integration/test_cmsdist_start_tests/IssueComments_1.json create mode 100644 tests/ReplayData_integration/test_cmsdist_start_tests/Issue_1.json create mode 100644 tests/ReplayData_integration/test_cmsdist_start_tests/PullRequestCommits_1.json create mode 100644 tests/ReplayData_integration/test_cmsdist_start_tests/PullRequestFiles_1.json create mode 100644 tests/ReplayData_integration/test_cmsdist_start_tests/PullRequest_1.json create mode 100644 tests/ReplayData_integration/test_cmsdist_start_tests/Repository_iarspider-cmssw_cmsdist.json create mode 100644 tests/ReplayData_integration/test_code_check_approved/CommitCombinedStatus_iarspider-cmssw_cmssw_2a9454e30606b17e52000110972998326ce9e428.json create mode 100644 tests/ReplayData_integration/test_code_check_approved/GitCommit_iarspider-cmssw_cmssw_2a9454e30606b17e52000110972998326ce9e428.json create mode 100644 tests/ReplayData_integration/test_code_check_approved/IssueComments_17.json create mode 100644 tests/ReplayData_integration/test_code_check_approved/Issue_17.json create mode 100644 tests/ReplayData_integration/test_code_check_approved/PullRequestCommits_17.json create mode 100644 tests/ReplayData_integration/test_code_check_approved/PullRequestFiles_17.json create mode 100644 tests/ReplayData_integration/test_code_check_approved/PullRequest_17.json create mode 100644 tests/ReplayData_integration/test_code_check_approved/Repository_iarspider-cmssw_cmssw.json create mode 100644 tests/ReplayData_integration/test_code_checks_with/CommitCombinedStatus_iarspider-cmssw_cmssw_ceea69106c5e0e17c03c87c13bdf187f03214fec.json create mode 100644 tests/ReplayData_integration/test_code_checks_with/GitCommit_iarspider-cmssw_cmssw_ceea69106c5e0e17c03c87c13bdf187f03214fec.json create mode 100644 tests/ReplayData_integration/test_code_checks_with/IssueComments_25.json create mode 100644 tests/ReplayData_integration/test_code_checks_with/Issue_25.json create mode 100644 tests/ReplayData_integration/test_code_checks_with/PullRequestCommits_25.json create mode 100644 tests/ReplayData_integration/test_code_checks_with/PullRequestFiles_25.json create mode 100644 tests/ReplayData_integration/test_code_checks_with/PullRequest_25.json create mode 100644 tests/ReplayData_integration/test_code_checks_with/Repository_iarspider-cmssw_cmssw.json create mode 100644 tests/ReplayData_integration/test_create_repo/IssueComments_30.json create mode 100644 tests/ReplayData_integration/test_create_repo/Issue_30.json create mode 100644 tests/ReplayData_integration/test_create_repo/Repository_iarspider-cmssw_cmssw.json create mode 100644 tests/ReplayData_integration/test_draft_pr_ask_ready/CommitCombinedStatus_iarspider-cmssw_cmssw_28ce3f5888b5433dcae409ee336b2ad422595246.json create mode 100644 tests/ReplayData_integration/test_draft_pr_ask_ready/GitCommit_iarspider-cmssw_cmssw_28ce3f5888b5433dcae409ee336b2ad422595246.json create mode 100644 tests/ReplayData_integration/test_draft_pr_ask_ready/IssueComments_21.json create mode 100644 tests/ReplayData_integration/test_draft_pr_ask_ready/Issue_21.json create mode 100644 tests/ReplayData_integration/test_draft_pr_ask_ready/PullRequestCommits_21.json create mode 100644 tests/ReplayData_integration/test_draft_pr_ask_ready/PullRequestFiles_21.json create mode 100644 tests/ReplayData_integration/test_draft_pr_ask_ready/PullRequest_21.json create mode 100644 tests/ReplayData_integration/test_draft_pr_ask_ready/Repository_iarspider-cmssw_cmssw.json create mode 100644 tests/ReplayData_integration/test_draft_pr_assign/CommitCombinedStatus_iarspider-cmssw_cmssw_9138474754099798ff50cb07287e7caa4786f247.json create mode 100644 tests/ReplayData_integration/test_draft_pr_assign/GitCommit_iarspider-cmssw_cmssw_9138474754099798ff50cb07287e7caa4786f247.json create mode 100644 tests/ReplayData_integration/test_draft_pr_assign/IssueComments_21.json create mode 100644 tests/ReplayData_integration/test_draft_pr_assign/Issue_21.json create mode 100644 tests/ReplayData_integration/test_draft_pr_assign/PullRequestCommits_21.json create mode 100644 tests/ReplayData_integration/test_draft_pr_assign/PullRequestFiles_21.json create mode 100644 tests/ReplayData_integration/test_draft_pr_assign/PullRequest_21.json create mode 100644 tests/ReplayData_integration/test_draft_pr_assign/Repository_iarspider-cmssw_cmssw.json create mode 100644 tests/ReplayData_integration/test_draft_pr_fully_signed/CommitCombinedStatus_iarspider-cmssw_cmssw_28ce3f5888b5433dcae409ee336b2ad422595246.json create mode 100644 tests/ReplayData_integration/test_draft_pr_fully_signed/GitCommit_iarspider-cmssw_cmssw_28ce3f5888b5433dcae409ee336b2ad422595246.json create mode 100644 tests/ReplayData_integration/test_draft_pr_fully_signed/IssueComments_21.json create mode 100644 tests/ReplayData_integration/test_draft_pr_fully_signed/Issue_21.json create mode 100644 tests/ReplayData_integration/test_draft_pr_fully_signed/PullRequestCommits_21.json create mode 100644 tests/ReplayData_integration/test_draft_pr_fully_signed/PullRequestFiles_21.json create mode 100644 tests/ReplayData_integration/test_draft_pr_fully_signed/PullRequest_21.json create mode 100644 tests/ReplayData_integration/test_draft_pr_fully_signed/Repository_iarspider-cmssw_cmssw.json create mode 100644 tests/ReplayData_integration/test_draft_pr_opened/CommitCombinedStatus_iarspider-cmssw_cmssw_9138474754099798ff50cb07287e7caa4786f247.json create mode 100644 tests/ReplayData_integration/test_draft_pr_opened/GitCommit_iarspider-cmssw_cmssw_9138474754099798ff50cb07287e7caa4786f247.json create mode 100644 tests/ReplayData_integration/test_draft_pr_opened/IssueComments_21.json create mode 100644 tests/ReplayData_integration/test_draft_pr_opened/Issue_21.json create mode 100644 tests/ReplayData_integration/test_draft_pr_opened/PullRequestCommits_21.json create mode 100644 tests/ReplayData_integration/test_draft_pr_opened/PullRequestFiles_21.json create mode 100644 tests/ReplayData_integration/test_draft_pr_opened/PullRequest_21.json create mode 100644 tests/ReplayData_integration/test_draft_pr_opened/Repository_iarspider-cmssw_cmssw.json create mode 100644 tests/ReplayData_integration/test_draft_pr_ready/CommitCombinedStatus_iarspider-cmssw_cmssw_28ce3f5888b5433dcae409ee336b2ad422595246.json create mode 100644 tests/ReplayData_integration/test_draft_pr_ready/GitCommit_iarspider-cmssw_cmssw_28ce3f5888b5433dcae409ee336b2ad422595246.json create mode 100644 tests/ReplayData_integration/test_draft_pr_ready/IssueComments_21.json create mode 100644 tests/ReplayData_integration/test_draft_pr_ready/Issue_21.json create mode 100644 tests/ReplayData_integration/test_draft_pr_ready/PullRequestCommits_21.json create mode 100644 tests/ReplayData_integration/test_draft_pr_ready/PullRequestFiles_21.json create mode 100644 tests/ReplayData_integration/test_draft_pr_ready/PullRequest_21.json create mode 100644 tests/ReplayData_integration/test_draft_pr_ready/Repository_iarspider-cmssw_cmssw.json create mode 100644 tests/ReplayData_integration/test_draft_pr_start_test/CommitCombinedStatus_iarspider-cmssw_cmssw_28ce3f5888b5433dcae409ee336b2ad422595246.json create mode 100644 tests/ReplayData_integration/test_draft_pr_start_test/GitCommit_iarspider-cmssw_cmssw_28ce3f5888b5433dcae409ee336b2ad422595246.json create mode 100644 tests/ReplayData_integration/test_draft_pr_start_test/IssueComments_21.json create mode 100644 tests/ReplayData_integration/test_draft_pr_start_test/Issue_21.json create mode 100644 tests/ReplayData_integration/test_draft_pr_start_test/PullRequestCommits_21.json create mode 100644 tests/ReplayData_integration/test_draft_pr_start_test/PullRequestFiles_21.json create mode 100644 tests/ReplayData_integration/test_draft_pr_start_test/PullRequest_21.json create mode 100644 tests/ReplayData_integration/test_draft_pr_start_test/Repository_iarspider-cmssw_cmssw.json create mode 100644 tests/ReplayData_integration/test_draft_pr_updated/CommitCombinedStatus_iarspider-cmssw_cmssw_28ce3f5888b5433dcae409ee336b2ad422595246.json create mode 100644 tests/ReplayData_integration/test_draft_pr_updated/Commit_iarspider-cmssw_cmssw_28ce3f5888b5433dcae409ee336b2ad422595246.json create mode 100644 tests/ReplayData_integration/test_draft_pr_updated/GitCommit_iarspider-cmssw_cmssw_28ce3f5888b5433dcae409ee336b2ad422595246.json create mode 100644 tests/ReplayData_integration/test_draft_pr_updated/IssueComments_21.json create mode 100644 tests/ReplayData_integration/test_draft_pr_updated/Issue_21.json create mode 100644 tests/ReplayData_integration/test_draft_pr_updated/PullRequestCommits_21.json create mode 100644 tests/ReplayData_integration/test_draft_pr_updated/PullRequestFiles_21.json create mode 100644 tests/ReplayData_integration/test_draft_pr_updated/PullRequest_21.json create mode 100644 tests/ReplayData_integration/test_draft_pr_updated/Repository_iarspider-cmssw_cmssw.json create mode 100644 tests/ReplayData_integration/test_empty_pr/Issue_33.json create mode 100644 tests/ReplayData_integration/test_empty_pr/PullRequest_33.json create mode 100644 tests/ReplayData_integration/test_empty_pr/Repository_iarspider-cmssw_cmssw.json create mode 100644 tests/ReplayData_integration/test_enable_none/CommitCombinedStatus_iarspider-cmssw_cmssw_5a76c5bd2fc93ef87eac8a48f5fc5816b01d7fc4.json create mode 100644 tests/ReplayData_integration/test_enable_none/GitCommit_iarspider-cmssw_cmssw_5a76c5bd2fc93ef87eac8a48f5fc5816b01d7fc4.json create mode 100644 tests/ReplayData_integration/test_enable_none/IssueComments_9.json create mode 100644 tests/ReplayData_integration/test_enable_none/Issue_9.json create mode 100644 tests/ReplayData_integration/test_enable_none/PullRequestCommits_9.json create mode 100644 tests/ReplayData_integration/test_enable_none/PullRequestFiles_9.json create mode 100644 tests/ReplayData_integration/test_enable_none/PullRequest_9.json create mode 100644 tests/ReplayData_integration/test_enable_none/Repository_iarspider-cmssw_cmssw.json create mode 100644 tests/ReplayData_integration/test_grant/CommitCombinedStatus_iarspider-cmssw_cmssw_ceea69106c5e0e17c03c87c13bdf187f03214fec.json create mode 100644 tests/ReplayData_integration/test_grant/GitCommit_iarspider-cmssw_cmssw_ceea69106c5e0e17c03c87c13bdf187f03214fec.json create mode 100644 tests/ReplayData_integration/test_grant/IssueComments_25.json create mode 100644 tests/ReplayData_integration/test_grant/Issue_25.json create mode 100644 tests/ReplayData_integration/test_grant/PullRequestCommits_25.json create mode 100644 tests/ReplayData_integration/test_grant/PullRequestFiles_25.json create mode 100644 tests/ReplayData_integration/test_grant/PullRequest_25.json create mode 100644 tests/ReplayData_integration/test_grant/Repository_iarspider-cmssw_cmssw.json create mode 100644 tests/ReplayData_integration/test_hold/CommitCombinedStatus_iarspider-cmssw_cmssw_dae848e38b8e387d7283a3e35818121487d9d76b.json create mode 100644 tests/ReplayData_integration/test_hold/GitCommit_iarspider-cmssw_cmssw_dae848e38b8e387d7283a3e35818121487d9d76b.json create mode 100644 tests/ReplayData_integration/test_hold/IssueComments_17.json create mode 100644 tests/ReplayData_integration/test_hold/Issue_17.json create mode 100644 tests/ReplayData_integration/test_hold/PullRequestCommits_17.json create mode 100644 tests/ReplayData_integration/test_hold/PullRequestFiles_17.json create mode 100644 tests/ReplayData_integration/test_hold/PullRequest_17.json create mode 100644 tests/ReplayData_integration/test_hold/Repository_iarspider-cmssw_cmssw.json create mode 100644 tests/ReplayData_integration/test_ignore_rejected_invalid/CommitCombinedStatus_iarspider-cmssw_cmssw_c592a62359c0f0b69dd35bacd8231714cdbab3a0.json create mode 100644 tests/ReplayData_integration/test_ignore_rejected_invalid/GitCommit_iarspider-cmssw_cmssw_c592a62359c0f0b69dd35bacd8231714cdbab3a0.json create mode 100644 tests/ReplayData_integration/test_ignore_rejected_invalid/IssueComments_25.json create mode 100644 tests/ReplayData_integration/test_ignore_rejected_invalid/Issue_25.json create mode 100644 tests/ReplayData_integration/test_ignore_rejected_invalid/PullRequestCommits_25.json create mode 100644 tests/ReplayData_integration/test_ignore_rejected_invalid/PullRequestFiles_25.json create mode 100644 tests/ReplayData_integration/test_ignore_rejected_invalid/PullRequest_25.json create mode 100644 tests/ReplayData_integration/test_ignore_rejected_invalid/Repository_iarspider-cmssw_cmssw.json create mode 100644 tests/ReplayData_integration/test_ignore_rejected_valid/CommitCombinedStatus_iarspider-cmssw_cmssw_c592a62359c0f0b69dd35bacd8231714cdbab3a0.json create mode 100644 tests/ReplayData_integration/test_ignore_rejected_valid/GitCommit_iarspider-cmssw_cmssw_c592a62359c0f0b69dd35bacd8231714cdbab3a0.json create mode 100644 tests/ReplayData_integration/test_ignore_rejected_valid/IssueComments_25.json create mode 100644 tests/ReplayData_integration/test_ignore_rejected_valid/Issue_25.json create mode 100644 tests/ReplayData_integration/test_ignore_rejected_valid/PullRequestCommits_25.json create mode 100644 tests/ReplayData_integration/test_ignore_rejected_valid/PullRequestFiles_25.json create mode 100644 tests/ReplayData_integration/test_ignore_rejected_valid/PullRequest_25.json create mode 100644 tests/ReplayData_integration/test_ignore_rejected_valid/Repository_iarspider-cmssw_cmssw.json create mode 100644 tests/ReplayData_integration/test_invalid_test_params/CommitCombinedStatus_iarspider-cmssw_cmssw_ceea69106c5e0e17c03c87c13bdf187f03214fec.json create mode 100644 tests/ReplayData_integration/test_invalid_test_params/GitCommit_iarspider-cmssw_cmssw_ceea69106c5e0e17c03c87c13bdf187f03214fec.json create mode 100644 tests/ReplayData_integration/test_invalid_test_params/IssueComments_25.json create mode 100644 tests/ReplayData_integration/test_invalid_test_params/Issue_25.json create mode 100644 tests/ReplayData_integration/test_invalid_test_params/PullRequestCommits_25.json create mode 100644 tests/ReplayData_integration/test_invalid_test_params/PullRequestFiles_25.json create mode 100644 tests/ReplayData_integration/test_invalid_test_params/PullRequest_25.json create mode 100644 tests/ReplayData_integration/test_invalid_test_params/Repository_iarspider-cmssw_cmssw.json create mode 100644 tests/ReplayData_integration/test_invalid_type/CommitCombinedStatus_iarspider-cmssw_cmssw_dae848e38b8e387d7283a3e35818121487d9d76b.json create mode 100644 tests/ReplayData_integration/test_invalid_type/GitCommit_iarspider-cmssw_cmssw_dae848e38b8e387d7283a3e35818121487d9d76b.json create mode 100644 tests/ReplayData_integration/test_invalid_type/IssueComments_17.json create mode 100644 tests/ReplayData_integration/test_invalid_type/Issue_17.json create mode 100644 tests/ReplayData_integration/test_invalid_type/PullRequestCommits_17.json create mode 100644 tests/ReplayData_integration/test_invalid_type/PullRequestFiles_17.json create mode 100644 tests/ReplayData_integration/test_invalid_type/PullRequest_17.json create mode 100644 tests/ReplayData_integration/test_invalid_type/Repository_iarspider-cmssw_cmssw.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/CommitCombinedStatus_iarspider-cmssw_cmssw_fd99bd146e87a00eb90eccef12f487ecc8f4c496.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_02440e727939b320077b2552cd1e2819122762e6.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_0b169bf8c51721082d8b4b175557a4fd7a41859e.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_0d5119e4905a0a36a535f2578ce96b41d687f63a.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_0e617968795f452376ad263cbe1a5e4af8780302.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_140c33ec8249a4a1efe2ffc8bcc3e4b5f84cbc5f.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_141848de6118a8ec0031d42a239b532e28ba7b20.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_1559fe71295ca36dcc6fa3e7ab7bbfd88a81d86c.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_1a0c294006f0727c08a8c535d4c35ca9d3a11560.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_2382eabec2dab6ab48fc7186266ccb6c7b964dc3.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_247c0caac63c4155f2a10acc26b59d7547ff6f21.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_26d5494b0ed51567d0f58fa3362caf3de1387fb4.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_273452e7560cb359d5f856bf0020c2527af8d40f.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_27e957c10865d54f442abb9a4db2b2f67548d928.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_28da794cf3573f21e2d2b7ab67f4b70faa424ef7.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_2aaed36eb31d0b944c227a24799b77e101cc22f2.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_2d4fe5cac27d329c45335fff21a76cc6f2887a42.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_2db73d9e8b6b95b05890f46a7ee7b5b80d025ca9.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_2e7e3e8910b334dc7ed092ac57f5eb98c8d2da30.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_2e92add26d5813078727a617884b9a3ae30e3de9.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_32389ecf320569de6f3eb0a721574ba90bc8c751.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_33bab99045167f9b921bd150ec6b92a07cabbb68.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_343e5e3248cb1f3a929ad5efeffbe0137d5f4fad.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_348546d623ee31bace9df6a1aa71604b990527ff.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_35bb64a0679da9b688f184f5b90fbccca98b8cf0.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_37d7bdc1af3512d1d8752e4319c103392a133d03.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_38a549d26370b1e7b5f3425f977194e08dc5fde7.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_3b5195aa80a73ff17ebf0a4b53550cefb7056ba9.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_3d0781365fb37582e3aad27b77ba897069211812.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_3d41e57f44b9aedeb0ce88c175b9937de6ad3c13.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_3f9ffe70bb1d3efcb3b6dbda251f3035b5d9ee56.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_4342dab36ead5f115ab89eb5d20d33b00afa67dc.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_456336e23277759bd12515136da78f7fef5dcae6.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_48e890c532fdfe2150006de853719fab3cffdc34.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_4918fb6875bad67ed11a790b5c1bfe92a832fe2a.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_4c8cc3cfe87c45e330c41b0728be267288fe5c02.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_4d570c74cab565cd7e2b6139e5a57f92b7b886be.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_4f1c4bcbe523e52af825a241984c35a846aba5f2.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_5392e68630f8c1f3e4b295ea80831c6a9caa4dc2.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_54643679f52ced591752a2f2e0d2f19d61818ce4.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_54a311b32085fd8a201f47993987cd3898519913.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_54d57f1f7cd199df49c988724d9b630389964ce8.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_561d6cfcd9df7f9567c66bd0f638d602081c02c5.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_56d2b863eaf5570a0c65ea9b6326a97ab2e39c9e.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_5710511d889195da564138babf2d14dc82f0b27f.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_577cfd8011ce680166019acad3b78d4d1aec5704.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_5850a11ff295071daa92b2e0ae3e9351e555e22a.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_5b7b56ff888627d0dbc1340ed2f5f7a1d29618f7.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_5de437bf09655fb67fa7f0ddecf969f2635db32e.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_5fd537309af26ec463652904bb9b4af194f053f9.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_62b4517e606f00a5155e904306a2cdffbdb686e4.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_639802afc54c74ac0dc8b396099bf5c8f233dd91.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_66ead66f52fd286f124c32aa3884ae1ad36f3963.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_67402bf06994fb808632d5194c505b3cef667749.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_6955d8ed3dc748e23c565b2978083036918468f6.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_695ad7b437304bb6b0c81d7a2c7234a855f0c693.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_6b3eaceed1efbb6412cd414cf42c11b523d43b46.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_6bc380dd03a72ed6b936206410d5d306635baffb.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_6ce2f1ca3368168db2046b418e246a4cd9482340.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_70d4a3979fca7c6983d73f89249f1a072b6939f3.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_713ba2443a4447a1d41355760c895ecc703ec57c.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_72c450fe9fad9b732c752fda13eae5358150ac6c.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_746cefc3b695998fca753f27b7937f7b8b0fd73a.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_7694958540750fe64b9271a4beb0c7d929bf7dff.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_771cd52d642b567fd401abeeeb73f6a03b7c25d1.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_7768fa4600824dd0b65dd81554cf06f57ce2e636.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_79f3589b1a2b00e7ad39d538a9e44473864a697d.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_7bb612cdc6079b0ada45c2eda67de3c756436cb3.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_7bd61e63325659a35291cb1bf1a0cfdb6eb57eea.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_7c09dd71a5f9eea6065d1bca2563fd0ba26cb31f.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_7dde5a4c24bfee4440e1eb74d380b3ed7f988714.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_7dfb8db88bca87267617e2d9f231cdf217241fe7.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_8138ac02f7370f2b3e0ba18eb326231f3dc25767.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_841284bbd93b36212d3a7dc0efe66029db4ed642.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_86e30fdf02dea2dd5fc3cdd44dd47bba178273a9.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_8965abe7d624415d97cadc713b7e149d71ff65f1.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_89f220f19348e3c2f0c4c6dc7945d469f1331786.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_8afccd866520ab62c501af476ad5b3b9af8f77eb.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_8c926930d03076afbc7f8385f6bd00ce8b1a1c01.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_8cb55938020bf324697a713ef8341cf74c676473.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_9313683ebe3a199a999ddd4435f1f8f577ecbb2b.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_93dd83317c6f5c690ddab5f833e121a7aa7e9958.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_93e8596aa02ca43bb0a2f4679cb998b842585b99.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_9494846e873fba740874ec7ecadce4a6d00f2321.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_94c509c1d2433ff6733e6d5e555fd0f9af47667a.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_952aa3635f84f2b32d16ac4775fbda37fa5e1dd4.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_965c832e10ac29e3c0f1b91fbb5f06891189f011.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_9687f4e8953e009205e255f49ace95dda6413888.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_989900e5eb2a5260f308b0b1818139704e5888ae.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_991dfec2212e29c247349c0a111b9daaacba4e54.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_9cbfcbb09eae7cac65425211c039a8f252d49143.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_9d9fa3ef63254933653481c5d3b5d17bd827c7a8.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_9dbe15adb5f414c1d422b65e4b0fb434ac2b8a0c.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_9ead59ffdbd00680efdcd278c945d0190f5431a2.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_a1585e75d345a0aa57d3d82947b0fe54acb14eb6.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_a3a61e5788ec64eff9d219dd89a0e9168a21941f.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_a3b0dbaa543986ca943e1dd7a1ded581b75ed42a.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_a42445818e0e4087aeca09673ee6977864fe01ef.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_a67fc27c06fcb20088043e80e5c70f9a7c7f557f.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_a795b32e0086bf1e95b73851de4fb2d2fa863c1f.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_a8d51426d8398cdfd67e05d0e522f00cf18d962d.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_ac021e5cda8755d345731bee5df062757bdc8d0b.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_ac81fc9eeaa7ebe9071efe91205570db06a728cb.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_acd63acec5999824c69d122ee9bfe4e486175edf.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_add7d8dadbca5bc85cc272df8cf61276baf04cd4.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_b01cfede232680315b8e776989863016c434c1c4.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_b10758b37d2f7b8054f84e716323ef01113bdc5a.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_b16a737b809df919dd2e8e3ab615b1cfbe112bd4.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_b1da2ff5d37ce752da86c15bd721b990f72d2204.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_b1e8c8c7fa228d3b3ba1f0b49d5abf6351ac813a.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_b37681e6cd269af256fbc9834ad8258389ae0a3b.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_b65976a868ea2226600ac191d4a63767b514bef0.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_b6c2bff101779e4b82efc928ce50db4cd3464c4d.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_b97f6a05ba120a65d58d103938db8df9baf4f806.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_b9a4a95a7669bb688eaf9c99d741615bdeb9a3be.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_bf4f3003d8ca2adca1fa6521e79de2e38fa00085.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_c0b2b32fe21f87917b8134e435a9d944a1593eee.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_c3338ae6aa615c78f5507d315c046d9e82bbce0d.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_c41d69c0800f7c5aa1c7c5f0fa600f94f3e3ba41.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_c4d3429387987cbe0740b97c3bd9e3c3053776d2.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_c55f434953618d3ee909a82555a2c2e8fe31b8e4.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_c5b694fb9ddd2908939b0bdf644c997587af5322.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_c655c0f2d0042e9e45aa5edfee9a307690c0cd9e.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_c84a9d9f368018e0672e7d2e931f8ae24a90ad83.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_cf8a20fe025a120a38033327b45213f75a30ebaf.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_d18965eed76efeb820839413951e7b490756ded2.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_d3ed78a1bb6abf12aa30b3134c4e506f2a5f8d58.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_d53b9bd64685138bda5b058402f47aa23b2f4e1e.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_d81c5623eff68a8c0c5f25827b85655dc611d186.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_d9a57159b2c24366f0d1b880aab463aaaf5da412.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_dd79321d938d68ff7634c0594d63609a81d08f6e.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_de5759756a4b88a6da27e6f1d1697373db4da96c.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_e11e6666b3cafc148568d7e58d46bcaf9e0f2143.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_e21f41004058e91d8dbb3caff061a097ea008911.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_e3a451b752fd843e69a9f2cd1cbb0dcc060ba4d0.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_e51cf1bf814047845cf0e6a09112abb57a0b6299.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_e5b7e1b62f6cec2fa47b6b25ef6fcf7225badc27.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_e7830eae688dec0bcd6ba16c7eb31d069f4c79d9.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_ea6acb1a1188b01dd1ebbbd6169a5b845d5ecdd0.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_ec5c91c29611a67043bd36b4c409fd938dde2e0b.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_f16d666bbaa62e716c0d66caac74d0eabed9dca2.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_f3b440e9ca574ac4971cc1478dae15a25e4357c4.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_f414411be9156696683ecf374478379ae1e65799.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_f4a39ca6442e7d783d7d57d8cddf98ebf90cc148.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_f5bff85f1393afe455fe42a4873ff3fcfcfc02b5.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_f82f884e422cc0a3f20d38016b7b1ba9b8fd4de2.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_fa22f9dce4aaf89fe9bd6a3b629d8653a99f6961.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_fa29a9f267a1c45ffa701242e9250f2ba50991df.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_fa830292720ccabc7c199249551291da825e1a90.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_fb070e47cb5a7af124bb2cc78c00b39d8d9567ec.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_fd99bd146e87a00eb90eccef12f487ecc8f4c496.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Commit_iarspider-cmssw_cmssw_fda1d3579f11ce0f851c037b0ac50fb641d79f11.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/GitCommit_iarspider-cmssw_cmssw_fd99bd146e87a00eb90eccef12f487ecc8f4c496.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/IssueComments_18.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Issue_18.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/PullRequestCommits_18.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/PullRequestFiles_18.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/PullRequest_18.json create mode 100644 tests/ReplayData_integration/test_many_commits_ok/Repository_iarspider-cmssw_cmssw.json create mode 100644 tests/ReplayData_integration/test_many_commits_warn/CommitCombinedStatus_iarspider-cmssw_cmssw_fd99bd146e87a00eb90eccef12f487ecc8f4c496.json create mode 100644 tests/ReplayData_integration/test_many_commits_warn/GitCommit_iarspider-cmssw_cmssw_fd99bd146e87a00eb90eccef12f487ecc8f4c496.json create mode 100644 tests/ReplayData_integration/test_many_commits_warn/IssueComments_18.json create mode 100644 tests/ReplayData_integration/test_many_commits_warn/Issue_18.json create mode 100644 tests/ReplayData_integration/test_many_commits_warn/Milestone_iarspider-cmssw_cmssw_4.json create mode 100644 tests/ReplayData_integration/test_many_commits_warn/PullRequestCommits_18.json create mode 100644 tests/ReplayData_integration/test_many_commits_warn/PullRequestFiles_18.json create mode 100644 tests/ReplayData_integration/test_many_commits_warn/PullRequest_18.json create mode 100644 tests/ReplayData_integration/test_many_commits_warn/RepoIdPullRequestCommits_399376380_18.json create mode 100644 tests/ReplayData_integration/test_many_commits_warn/RepoIdPullRequestFiles_399376380_18.json create mode 100644 tests/ReplayData_integration/test_many_commits_warn/Repository_iarspider-cmssw_cmssw.json create mode 100644 tests/ReplayData_integration/test_merge_pr/CommitCombinedStatus_iarspider-cmssw_cmssw_eb413ce8e0b33985d3425d9384bb8d5d4ab0ce48.json create mode 100644 tests/ReplayData_integration/test_merge_pr/GitCommit_iarspider-cmssw_cmssw_eb413ce8e0b33985d3425d9384bb8d5d4ab0ce48.json create mode 100644 tests/ReplayData_integration/test_merge_pr/IssueComments_36.json create mode 100644 tests/ReplayData_integration/test_merge_pr/Issue_36.json create mode 100644 tests/ReplayData_integration/test_merge_pr/PullRequestCommits_36.json create mode 100644 tests/ReplayData_integration/test_merge_pr/PullRequestFiles_36.json create mode 100644 tests/ReplayData_integration/test_merge_pr/PullRequest_36.json create mode 100644 tests/ReplayData_integration/test_merge_pr/Repository_iarspider-cmssw_cmssw.json create mode 100644 tests/ReplayData_integration/test_new_issue/IssueComments_27.json create mode 100644 tests/ReplayData_integration/test_new_issue/Issue_27.json create mode 100644 tests/ReplayData_integration/test_new_issue/Repository_iarspider-cmssw_cmssw.json create mode 100644 tests/ReplayData_integration/test_new_pr/CommitCombinedStatus_iarspider-cmssw_cmssw_2a9454e30606b17e52000110972998326ce9e428.json create mode 100644 tests/ReplayData_integration/test_new_pr/Commit_iarspider-cmssw_cmssw_2a9454e30606b17e52000110972998326ce9e428.json create mode 100644 tests/ReplayData_integration/test_new_pr/GitCommit_iarspider-cmssw_cmssw_2a9454e30606b17e52000110972998326ce9e428.json create mode 100644 tests/ReplayData_integration/test_new_pr/IssueComments_17.json create mode 100644 tests/ReplayData_integration/test_new_pr/Issue_17.json create mode 100644 tests/ReplayData_integration/test_new_pr/Milestone_iarspider-cmssw_cmssw_4.json create mode 100644 tests/ReplayData_integration/test_new_pr/PullRequestCommits_17.json create mode 100644 tests/ReplayData_integration/test_new_pr/PullRequestFiles_17.json create mode 100644 tests/ReplayData_integration/test_new_pr/PullRequest_17.json create mode 100644 tests/ReplayData_integration/test_new_pr/Repository_iarspider-cmssw_cmssw.json create mode 100644 tests/ReplayData_integration/test_orp_issue/IssueComments_39.json create mode 100644 tests/ReplayData_integration/test_orp_issue/Issue_39.json create mode 100644 tests/ReplayData_integration/test_orp_issue/Repository_iarspider-cmssw_cmssw.json create mode 100644 tests/ReplayData_integration/test_test_all_params/CommitCombinedStatus_iarspider-cmssw_cmssw_72cc05e17ee74e5ace3c4e5d5d066de49e364edb.json create mode 100644 tests/ReplayData_integration/test_test_all_params/GitCommit_iarspider-cmssw_cmssw_72cc05e17ee74e5ace3c4e5d5d066de49e364edb.json create mode 100644 tests/ReplayData_integration/test_test_all_params/IssueComments_24.json create mode 100644 tests/ReplayData_integration/test_test_all_params/Issue_24.json create mode 100644 tests/ReplayData_integration/test_test_all_params/PullRequestCommits_24.json create mode 100644 tests/ReplayData_integration/test_test_all_params/PullRequestFiles_24.json create mode 100644 tests/ReplayData_integration/test_test_all_params/PullRequest_24.json create mode 100644 tests/ReplayData_integration/test_test_all_params/Repository_iarspider-cmssw_cmssw.json create mode 100644 tests/ReplayData_integration/test_too_many_commits/CommitCombinedStatus_iarspider-cmssw_cmssw_848c88ff0403fad82b647b13c2be704548a78df4.json create mode 100644 tests/ReplayData_integration/test_too_many_commits/GitCommit_iarspider-cmssw_cmssw_848c88ff0403fad82b647b13c2be704548a78df4.json create mode 100644 tests/ReplayData_integration/test_too_many_commits/IssueComments_18.json create mode 100644 tests/ReplayData_integration/test_too_many_commits/Issue_18.json create mode 100644 tests/ReplayData_integration/test_too_many_commits/PullRequestCommits_18.json create mode 100644 tests/ReplayData_integration/test_too_many_commits/PullRequestFiles_18.json create mode 100644 tests/ReplayData_integration/test_too_many_commits/PullRequest_18.json create mode 100644 tests/ReplayData_integration/test_too_many_commits/Repository_iarspider-cmssw_cmssw.json create mode 100755 tests/convert_http_recording.py create mode 100755 tests/test_process_pr_v2.py diff --git a/.github/workflows/test-process-pr.yaml b/.github/workflows/test-process-pr.yaml index 42b876df7bdb..5b6519c30f88 100644 --- a/.github/workflows/test-process-pr.yaml +++ b/.github/workflows/test-process-pr.yaml @@ -3,7 +3,8 @@ name: Test changes to process_pr.py on: push: paths: - - process_pr.py + - process_pr_v2.py + - tests/test_process_pr_v2.py - .github/workflows/test-process-pr.yaml jobs: @@ -11,24 +12,13 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"] + python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"] steps: - uses: MathRobin/timezone-action@v1.1 with: timezoneLinux: 'Europe/Paris' - uses: actions/checkout@v4 - - uses: actions/checkout@v4 - with: - repository: PyGithub/PyGithub - ref: v1.56 - path: tmp - sparse-checkout: tests/Framework.py - sparse-checkout-cone-mode: false - - run: mv tmp/tests/Framework.py tests/ - - run: | - cd tests - patch -p0 < Framework.patch - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v4 with: @@ -39,7 +29,4 @@ jobs: pip install -r tests/test-requirements.txt - name: Test with pytest run: | - pytest -v -s tests/test_process_pr.py --auth_with_token - - name: Test regexes - run: | - pytest -v tests/test_regexes.py \ No newline at end of file + pytest -v -s tests/test_process_pr_v2.py diff --git a/docs/COMMANDS.md b/docs/COMMANDS.md new file mode 100644 index 000000000000..c0f34845170d --- /dev/null +++ b/docs/COMMANDS.md @@ -0,0 +1,283 @@ +# Implementing New Commands in process_pr_v2.py + +This document describes how to implement new commands and the important patterns to follow. + +## Command Registration + +Commands are registered using the `@command` decorator: + +```python +@command( + "command_name", # Unique identifier for the command + r"^regex_pattern$", # Pattern to match (first line of comment) + description="...", # Description for help/debugging + pr_only=False, # Set True if command only works on PRs (not Issues) +) +def handle_command_name( + context: PRContext, + match: re.Match, + user: str, + comment_id: int, + timestamp: datetime, +) -> Optional[bool]: + """ + Handle the command. + + Returns: + True: Command was processed successfully + False: Command was recognized but failed (e.g., no permission) + None: Command pattern matched but this isn't actually a command (fallthrough) + """ + ... +``` + +## Deferred Actions Pattern + +**IMPORTANT**: Command handlers should NOT directly call GitHub API methods to modify state. Instead, use the deferred action queues to ensure consistent processing. + +### Why Deferred Actions? + +1. **Frozen Cache Consistency**: The bot uses frozen caches (e.g., commit statuses) during processing. Direct modifications would make the cache inconsistent with reality. + +2. **Deduplication**: Multiple commands might queue the same action. Deferred queues handle "last one wins" semantics. + +3. **Atomic Batch Updates**: All changes are applied together at the end, reducing API calls and race conditions. + +4. **Dry-Run Support**: Deferred actions can be logged instead of executed in dry-run mode. + +### Deferred Action Types + +| Action Type | Queue/Method | Applied By | +|-------------|--------------|------------| +| Labels | `context.pending_labels.add(label)` | `update_pr_status()` | +| Commit Statuses | `context.queue_status_update(...)` | `flush_pending_statuses()` | +| Comments | `queue_bot_comment(context, message)` | `flush_pending_comments()` | +| Reactions | `context.pending_reactions[comment_id] = reaction` | End of `process_pr()` | +| Build Commands | `context.pending_build_command = (...)` | `process_pending_build_test_commands()` | +| Test Commands | `context.pending_test_command = (...)` | `process_pending_build_test_commands()` | + +### Example: Adding a Label + +```python +@command("urgent", r"^urgent$", description="Mark PR as urgent") +def handle_urgent(context, match, user, comment_id, timestamp): + # DON'T do this: + # context.issue.add_to_labels("urgent") # WRONG! + + # DO this instead: + context.pending_labels.add("urgent") + return True +``` + +### Example: Setting a Commit Status + +```python +@command("approve_checks", r"^\+code-checks$", description="Approve code checks") +def handle_approve_checks(context, match, user, comment_id, timestamp): + # DON'T do this: + # commit.create_status(state="success", ...) # WRONG! + + # DO this instead: + pr_id = context.issue.number + context.queue_status_update( + state="success", + description="See details", + context_name=f"cms/{pr_id}/code-checks", + target_url=comment_url, + ) + return True +``` + +### Example: Posting a Comment + +```python +@command("notify", r"^notify\s+(.+)$", description="Send notification") +def handle_notify(context, match, user, comment_id, timestamp): + message = match.group(1) + + # DON'T do this: + # context.issue.create_comment(f"Notification: {message}") # WRONG! + + # DO this instead: + queue_bot_comment(context, f"Notification: {message}") + return True +``` + +## Special Cases: Immediate Actions + +In rare cases, actions need to happen immediately rather than being deferred: + +### 1. Reactions on the Current Comment + +Reactions are typically added immediately to provide feedback to the user: + +```python +# Adding reaction to current comment is OK to do immediately +# (though context.pending_reactions is preferred) +for comment in context.comments: + if comment.id == comment_id: + comment.create_reaction("+1") + break +``` + +However, the bot tracks reactions in `context.cache.emoji` as the source of truth, so prefer using `context.pending_reactions` when possible. + +### 2. Cache Updates + +Updates to the bot's internal cache (`context.cache`) happen immediately since they're local state: + +```python +# Cache updates are immediate (local state) +context.cache.comments[str(comment_id)] = CommentInfo( + timestamp=timestamp.isoformat(), + first_line="+1", + ctype="+1", + categories=categories, + signed_files=signed_files, + user=user, +) +``` + +### 3. Context Flags + +Setting flags on the context is immediate since they're local state: + +```python +# Context flags are immediate +context.abort_tests = True +context.should_merge = True +context.must_close = True +``` + +## Checking Current State + +### Frozen Cache + +When checking current state, use the frozen cache methods: + +```python +# Get frozen commit statuses (from start of processing) +statuses = context.get_commit_statuses() +status = context.get_commit_status("cms/123/code-checks") +``` + +### Checking Pending Updates + +If you need to see changes queued in the current run, check `pending_status_updates`: + +```python +# Check if status was already queued in this run +status_context = f"cms/{pr_id}/code-checks" +if status_context in context.pending_status_updates: + sha, state, description, target_url = context.pending_status_updates[status_context] + # Use queued state +else: + # Fall back to frozen cache + status = context.get_commit_status(status_context) +``` + +## Permission Checking + +Commands should verify the user has permission before taking action: + +```python +@command("hold", r"^hold$", description="Place hold on PR") +def handle_hold(context, match, user, comment_id, timestamp): + # Check permissions first + if not can_place_hold(context, user): + logger.info(f"User {user} not authorized to place hold") + return False + + # Then perform the action + context.pending_labels.add("hold") + return True +``` + +Common permission checks: +- `is_valid_tester(context, user)` - Can trigger tests +- `get_user_l2_categories(repo_config, user, timestamp)` - L2 categories user can sign +- Check against `TRIGGER_PR_TESTS`, `PR_HOLD_MANAGERS`, `CMSSW_ISSUES_TRACKERS`, etc. + +## Build/Test Commands + +Build and test commands have special handling due to deduplication requirements: + +```python +@command("test", r"^test(\s+.*)?$", description="Trigger tests") +def handle_build_test(context, match, user, comment_id, timestamp): + # Parse the command + result = parse_test_cmd(first_line) + + # For build: check if already processed (has +1 reaction) + if result.verb == "build": + reactions = get_comment_reactions(context, comment_id) + if "+1" in reactions: + return True # Already processed + + # Store as pending (last one wins) + if result.verb == "build": + context.pending_build_command = (comment_id, user, timestamp, result) + else: + context.pending_test_command = (comment_id, user, timestamp, result) + + return True +``` + +The actual execution happens in `process_pending_build_test_commands()` after all comments are processed. + +## Timestamp Handling + +For commands that are invalidated by new commits (like signatures), check the timestamp: + +```python +# Skip if command was made before the latest commit +latest_commit_ts = get_latest_commit_timestamp(context) +if latest_commit_ts and timestamp < latest_commit_ts: + logger.debug(f"Skipping command - before latest commit") + return True # Command recognized but not applicable +``` + +## Testing Commands + +When writing tests for new commands: + +1. Use `create_basic_pr_data()` to set up test fixtures +2. Use `dryRun=False` to actually record actions +3. Use `FunctionHook(recorder.property_file_hook())` to capture property file creation +4. Check `recorder.actions` for expected actions + +```python +def test_my_command(self, record_mode): + create_basic_pr_data("test_my_command", pr_number=1, comments=[...]) + + recorder = ActionRecorder("test_my_command", record_mode) + gh = MockGithub("test_my_command", recorder) + repo = MockRepository("test_my_command", recorder=recorder) + issue = MockIssue("test_my_command", number=1, recorder=recorder) + + with FunctionHook(recorder.property_file_hook()): + result = process_pr( + repo_config=repo_config, + gh=gh, + repo=repo, + issue=issue, + dryRun=False, + cmsbuild_user="cmsbuild", + loglevel="DEBUG", + ) + + # Verify expected actions + label_actions = [a for a in recorder.actions if a["action"] == "add_labels"] + assert "my-label" in label_actions[0]["details"]["labels"] +``` + +## Summary + +| Do | Don't | +|----|-------| +| `context.pending_labels.add(label)` | `issue.add_to_labels(label)` | +| `context.queue_status_update(...)` | `commit.create_status(...)` | +| `queue_bot_comment(context, msg)` | `issue.create_comment(msg)` | +| `context.pending_reactions[id] = reaction` | Direct reaction calls (usually OK) | +| Check `pending_status_updates` first | Assume frozen cache is current | +| Return `True`/`False`/`None` appropriately | Raise exceptions for normal flow | \ No newline at end of file diff --git a/docs/DESIGN.md b/docs/DESIGN.md new file mode 100644 index 000000000000..052ca62a044a --- /dev/null +++ b/docs/DESIGN.md @@ -0,0 +1,529 @@ +# CMS-Bot Process PR V2 - Design Document + +## Overview + +`process_pr_v2.py` is a comprehensive GitHub bot for automating CI tests and PR reviews for the CMS-SW project. The bot is designed to be **stateless**, storing all necessary state in PR/Issue comments as a compressed cache. + +## Architecture + +### Core Design Principles + +1. **Stateless Operation**: The bot reconstructs state from GitHub comments on each invocation +2. **Decorator-Based Commands**: Commands are registered via `@command` decorators for clean separation +3. **Snapshot-Based Tracking**: File states and signatures are tracked via snapshots keyed to commit SHAs +4. **Chronological Processing**: Comments are processed in timestamp order to build accurate state +5. **Deferred Command Processing**: Build/test commands are collected and deduplicated before execution + +### Key Data Structures + +#### PRContext +Central context object holding all state during PR/Issue processing: +- Repository and PR/Issue references +- Cache (signatures, file states, test requests) +- Signing categories and holds +- Pending labels and test triggers +- Configuration flags (dry_run, force, etc.) +- Package categories mapping +- `commits`: Dict mapping SHA → commit object (for O(1) lookup) +- `_last_commit`: Cached last commit (by committer date) +- `_commit_statuses`: Frozen cache of commit statuses at start of processing +- `pending_status_updates`: Dict mapping context_name → (sha, state, desc, url) for deferred updates +- `pending_bot_comments`: Queue of comments to post at end +- `pending_build_test_command`: Single pending build/test command (last one wins between build and test) +- `pending_labels`: Set of labels to add +- `pending_reactions`: Dict mapping comment_id → reaction to add + +#### BotCache +Compressed cache stored in issue comments: +- `emoji`: Dict mapping comment_id to bot's reaction (source of truth for reactions) +- `fv` (file_versions): Dict mapping `"filename::sha"` to `{ts, cats}` +- `comments`: Dict of processed `CommentInfo` objects with timestamps, first_line, ctype, categories, signed_files, user, locked + +#### FileVersion +Tracks file state: +- `filename`: File path +- `blob_sha`: Git blob SHA +- `timestamp`: When this version was seen +- `categories`: Categories this file belongs to + +#### CommentInfo +Cached comment data: +- `timestamp`: Comment creation time +- `first_line`: First non-blank line (for command detection) +- `ctype`: Comment type (e.g., "sign", "hold") +- `categories`: Categories affected +- `signed_files`: List of `"filename::sha"` strings signed +- `user`: Comment author +- `locked`: Whether comment is locked (won't be reprocessed) + +## Command System + +### Command Registration + +Commands are registered using the `@command` decorator: + +```python +@command("name", r"^regex_pattern$", description="...", pr_only=True) +def handle_name(context, match, user, comment_id, timestamp): + ... +``` + +### Implemented Commands + +#### Approval Commands +| Command | Pattern | Description | Permissions | +|---------|---------|-------------|-------------| +| `+1` | `^\+1$` | Approve category/categories | L2 signers for category | +| `-1` | `^-1$` | Reject category/categories | L2 signers for category | +| `+category` | `^\+([\w-]+)$` | Approve specific category | L2 signers for that category | +| `-category` | `^-([\w-]+)$` | Reject specific category | L2 signers for that category | + +#### Category Management +| Command | Pattern | Description | Permissions | +|---------|---------|-------------|-------------| +| `assign ` | `^assign\s+(.+)$` | Add categories to PR | L2 signers | +| `unassign ` | `^unassign\s+(.+)$` | Remove categories from PR | L2 signers | + +#### Hold Commands +| Command | Pattern | Description | Permissions | +|---------|---------|-------------|-------------| +| `hold` | `^hold$` | Place hold to prevent automerge | L2 signers, Release Managers, PR_HOLD_MANAGERS | +| `unhold` | `^unhold$` | Remove hold | ORP (all holds), Others (own holds only) | + +#### Test Commands +| Command | Pattern | Description | Permissions | +|---------|---------|-------------|-------------| +| `test [params]` | `^test(\s+.*)?$` | Trigger CI tests | Valid testers (TRIGGER_PR_TESTS, L2s, Release Managers) | +| `build [params]` | `^build(\s+.*)?$` | Trigger build only | Valid testers | +| `test parameters ` | `^test\s+parameters\s+(.+)$` | Set test parameters | Valid testers | +| `abort` | `^abort$` | Abort running tests | Valid testers | +| `abort test` | `^abort\s+test$` | Abort running tests | Valid testers | + +#### Code Quality Commands +| Command | Pattern | Description | Permissions | +|---------|---------|-------------|-------------| +| `code-checks` | `^code-checks(\s+.*)?$` | Run code quality checks | Valid testers | + +#### Label Commands +| Command | Pattern | Description | Permissions | +|---------|---------|-------------|-------------| +| `type