Fix ansible-test merge change detection.
(cherry picked from commit aa7fe919d3
)
This commit is contained in:
parent
6dca1d7784
commit
07403a2f92
2 changed files with 22 additions and 11 deletions
|
@ -106,17 +106,10 @@ class ShippableChanges(object):
|
||||||
display.warning('Unable to find project. Cannot determine changes. All tests will be executed.')
|
display.warning('Unable to find project. Cannot determine changes. All tests will be executed.')
|
||||||
return None
|
return None
|
||||||
|
|
||||||
merge_runs = sorted(merge_runs, key=lambda r: r['createdAt'])
|
successful_commits = set(run['commitSha'] for run in merge_runs if run['statusCode'] == 30)
|
||||||
known_commits = set()
|
commit_history = git.get_rev_list(max_count=100)
|
||||||
last_successful_commit = None
|
ordered_successful_commits = [commit for commit in commit_history if commit in successful_commits]
|
||||||
|
last_successful_commit = ordered_successful_commits[0] if ordered_successful_commits else None
|
||||||
for merge_run in merge_runs:
|
|
||||||
commit_sha = merge_run['commitSha']
|
|
||||||
if commit_sha not in known_commits:
|
|
||||||
known_commits.add(commit_sha)
|
|
||||||
if merge_run['statusCode'] == 30:
|
|
||||||
if git.is_valid_ref(commit_sha):
|
|
||||||
last_successful_commit = commit_sha
|
|
||||||
|
|
||||||
if last_successful_commit is None:
|
if last_successful_commit is None:
|
||||||
display.warning('No successful commit found. All tests will be executed.')
|
display.warning('No successful commit found. All tests will be executed.')
|
||||||
|
|
|
@ -59,6 +59,24 @@ class Git(object):
|
||||||
cmd = ['symbolic-ref', '--short', 'HEAD']
|
cmd = ['symbolic-ref', '--short', 'HEAD']
|
||||||
return self.run_git(cmd).strip()
|
return self.run_git(cmd).strip()
|
||||||
|
|
||||||
|
def get_rev_list(self, commits=None, max_count=None):
|
||||||
|
"""
|
||||||
|
:type commits: list[str] | None
|
||||||
|
:type max_count: int | None
|
||||||
|
:rtype: list[str]
|
||||||
|
"""
|
||||||
|
cmd = ['rev-list']
|
||||||
|
|
||||||
|
if commits:
|
||||||
|
cmd += commits
|
||||||
|
else:
|
||||||
|
cmd += ['HEAD']
|
||||||
|
|
||||||
|
if max_count:
|
||||||
|
cmd += ['--max-count', '%s' % max_count]
|
||||||
|
|
||||||
|
return self.run_git_split(cmd)
|
||||||
|
|
||||||
def get_branch_fork_point(self, branch):
|
def get_branch_fork_point(self, branch):
|
||||||
"""
|
"""
|
||||||
:type branch: str
|
:type branch: str
|
||||||
|
|
Loading…
Reference in a new issue