diff --git a/src/python/merge_analyzer.py b/src/python/merge_analyzer.py index 77da0baeab..37d26975f5 100755 --- a/src/python/merge_analyzer.py +++ b/src/python/merge_analyzer.py @@ -63,15 +63,6 @@ def merge_analyzer( # pylint: disable=too-many-locals left_success, _ = repo_left.checkout(merge_data["left"]) right_success, _ = repo_right.checkout(merge_data["right"]) - if not left_success: - raise Exception( - "git checkout failed: ", repo_left.repo_path, merge_data["left"] - ) - if not right_success: - raise Exception( - "git checkout failed: ", repo_right.repo_path, merge_data["right"] - ) - # Compute diff size in lines between left and right assert repo_left.repo_path.exists() assert repo_right.repo_path.exists() @@ -99,20 +90,36 @@ def merge_analyzer( # pylint: disable=too-many-locals cache_data["diff_contains_java_file"] = contains_java_file # Test left parent - cache_data["left_tree_fingerprint"] = repo_left.compute_tree_fingerprint() - result, test_coverage = repo_left.test(TIMEOUT_TESTING_PARENT, N_TESTS) - cache_data["left parent test result"] = result.name - cache_data["left parent test coverage"] = test_coverage - cache_data["parents pass"] = is_test_passed(cache_data["left parent test result"]) + if not left_success: + # This should never happen. Search output for "Git_checkout_failed" + cache_data["left parent test result"] = TEST_STATE.Git_checkout_failed.name + cache_data["left_tree_fingerprint"] = None + cache_data["left parent test coverage"] = None + cache_data["parents pass"] = False + else: + cache_data["left_tree_fingerprint"] = repo_left.compute_tree_fingerprint() + result, test_coverage = repo_left.test(TIMEOUT_TESTING_PARENT, N_TESTS) + cache_data["left parent test result"] = result.name + cache_data["left parent test coverage"] = test_coverage + cache_data["parents pass"] = is_test_passed( + cache_data["left parent test result"] + ) # Test right parent - cache_data["right_tree_fingerprint"] = repo_right.compute_tree_fingerprint() - result, test_coverage = repo_right.test(TIMEOUT_TESTING_PARENT, N_TESTS) - cache_data["right parent test result"] = result.name - cache_data["right parent test coverage"] = test_coverage - cache_data["parents pass"] = cache_data["parents pass"] and is_test_passed( - cache_data["right parent test result"] - ) + if not right_success: + # This should never happen. Search output for "Git_checkout_failed" + cache_data["right parent test result"] = TEST_STATE.Git_checkout_failed.name + cache_data["right_tree_fingerprint"] = None + cache_data["right parent test coverage"] = None + cache_data["parents pass"] = False + else: + cache_data["right_tree_fingerprint"] = repo_right.compute_tree_fingerprint() + result, test_coverage = repo_right.test(TIMEOUT_TESTING_PARENT, N_TESTS) + cache_data["right parent test result"] = result.name + cache_data["right parent test coverage"] = test_coverage + cache_data["parents pass"] = cache_data["parents pass"] and is_test_passed( + cache_data["right parent test result"] + ) cache_data["test merge"] = ( cache_data["parents pass"] diff --git a/src/python/write_head_hashes.py b/src/python/write_head_hashes.py index b401c7e2ff..1cdcd3b463 100755 --- a/src/python/write_head_hashes.py +++ b/src/python/write_head_hashes.py @@ -52,6 +52,7 @@ def clone_repo(repo_slug: str) -> git.repo.Repo: except Exception as e: print(repo_slug, "Exception during cloning:\n", e) raise + repo.remote().fetch("refs/pull/*/head:refs/remotes/origin/pull/*") return repo