Skip to content

Commit

Permalink
fix: update merge commit command
Browse files Browse the repository at this point in the history
  • Loading branch information
thomasrockhu-codecov committed Feb 6, 2024
1 parent da50de0 commit 993eac0
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 7 deletions.
30 changes: 24 additions & 6 deletions codecov_cli/helpers/ci_adapters/github_actions.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
import logging
import os
import re
import subprocess

from codecov_cli.helpers.ci_adapters.base import CIAdapterBase

logger = logging.getLogger("codecovcli")


class GithubActionsCIAdapter(CIAdapterBase):
# https://docs.github.com/en/actions/learn-github-actions/environment-variables
Expand All @@ -17,14 +20,29 @@ def _get_commit_sha(self):
if not pr:
return commit

# actions/checkout should be run with fetch-depth > 1 or set to 0 for this to work
completed_subprocess = subprocess.run(
["git", "rev-parse", "HEAD^@"], capture_output=True
merge_commit_regex = "^[a-z0-9]{40} [a-z0-9]{40}$"
merge_commit_message = subprocess.run(
["git", "show", "--no-patch", "--format=%P"],
capture_output=True,
)

parents_hash = completed_subprocess.stdout.decode().strip().splitlines()
if len(parents_hash) == 2:
return parents_hash[1]
try:
merge_commit_message = merge_commit_message.decode("utf-8")
except Exception:
pass # Probably is None

if re.match(merge_commit_regex, merge_commit_message) is not None:
merge_commit = merge_commit_messages.split(" ")[1]
logger.info(f" Fixing merge commit SHA ${commit} -> ${merge_commit}")
commit = merge_commit
elif merge_commit_message == "":
logger.info(
"-> Issue detecting commit SHA. Please run actions/checkout with fetch-depth > 1 or set to 0"
)
else:
logger.info(
f" Commit with SHA ${commit} of PR ${pr} is not a merge commit"
)

return commit

Expand Down
2 changes: 1 addition & 1 deletion tests/ci_adapters/test_ghactions.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ def test_commit_sha_in_merge_commit_and_parents_hash_len_is_2(self, mocker):
return_value=fake_subprocess,
)

fake_subprocess.stdout = b"aa74b3ff0411086ee37e7a78f1b62984d7759077\n20e1219371dff308fd910b206f47fdf250621abf"
fake_subprocess.stdout = b"aa74b3ff0411086ee37e7a78f1b62984d7759077 20e1219371dff308fd910b206f47fdf250621abf"
assert (
GithubActionsCIAdapter().get_fallback_value(FallbackFieldEnum.commit_sha)
== "20e1219371dff308fd910b206f47fdf250621abf"
Expand Down

0 comments on commit 993eac0

Please sign in to comment.