Merge "gitlab - add the merge request updated test"
This commit is contained in:
commit
4dcab054a3
|
@ -1649,7 +1649,7 @@ class FakeGitlabAPIClient(gitlabconnection.GitlabAPIClient):
|
|||
'state': mr.state,
|
||||
'description': mr.description,
|
||||
'updated_at': mr.updated_at.strftime('%Y-%m-%dT%H:%M:%S.%fZ'),
|
||||
'sha': mr.patch_number,
|
||||
'sha': mr.sha,
|
||||
'labels': mr.labels,
|
||||
'merged_at': mr.merged_at,
|
||||
'merge_status': mr.merge_status,
|
||||
|
@ -1694,13 +1694,11 @@ class FakeGitlabMergeRequest(object):
|
|||
self.created_at = datetime.datetime.now()
|
||||
self.updated_at = self.created_at
|
||||
self.merged_at = None
|
||||
self.patch_number = None
|
||||
self.sha = None
|
||||
self.state = 'opened'
|
||||
self.merge_status = 'can_be_merged'
|
||||
self.uuid = uuid.uuid4().hex
|
||||
self.labels = []
|
||||
self.notes = []
|
||||
self.upstream_root = upstream_root
|
||||
self.url = "https://%s/%s/merge_requests/%s" % (
|
||||
self.gitlab.server, urllib.parse.quote_plus(
|
||||
self.project), self.number)
|
||||
|
@ -1750,10 +1748,10 @@ class FakeGitlabMergeRequest(object):
|
|||
f.write(content)
|
||||
repo.index.add([fn])
|
||||
|
||||
self.patch_number = repo.index.commit(msg).hexsha
|
||||
self.sha = repo.index.commit(msg).hexsha
|
||||
|
||||
repo.create_head(self.getMRReference(), self.patch_number, force=True)
|
||||
self.mr_ref.set_commit(self.patch_number)
|
||||
repo.create_head(self.getMRReference(), self.sha, force=True)
|
||||
self.mr_ref.set_commit(self.sha)
|
||||
repo.head.reference = 'master'
|
||||
repo.git.clean('-x', '-f', '-d')
|
||||
repo.heads['master'].checkout()
|
||||
|
@ -1776,13 +1774,16 @@ class FakeGitlabMergeRequest(object):
|
|||
'%Y-%m-%d %H:%M:%S UTC'),
|
||||
'iid': self.number,
|
||||
'target_branch': self.branch,
|
||||
'last_commit': {
|
||||
'id': self.patch_number,
|
||||
}
|
||||
'last_commit': {'id': self.sha}
|
||||
},
|
||||
}
|
||||
return (name, data)
|
||||
|
||||
def getMergeRequestUpdatedEvent(self):
|
||||
self._addCommitInMR()
|
||||
self._updateTimeStamp()
|
||||
return self.getMergeRequestOpenedEvent()
|
||||
|
||||
def getMergeRequestCommentedEvent(self, note):
|
||||
self.addNote(note)
|
||||
note_date = self.notes[-1]['created_at'].strftime(
|
||||
|
@ -1797,9 +1798,7 @@ class FakeGitlabMergeRequest(object):
|
|||
'title': self.title,
|
||||
'iid': self.number,
|
||||
'target_branch': self.branch,
|
||||
'last_commit': {
|
||||
'id': self.patch_number,
|
||||
},
|
||||
'last_commit': {'id': self.sha}
|
||||
},
|
||||
'object_attributes': {
|
||||
'created_at': note_date,
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
- event: gl_merge_request
|
||||
action:
|
||||
- opened
|
||||
- changed
|
||||
start:
|
||||
gitlab:
|
||||
comment: True
|
||||
|
|
|
@ -96,7 +96,7 @@ class TestGitlabDriver(ZuulTestCase):
|
|||
job = self.getJobFromHistory('project-test2')
|
||||
zuulvars = job.parameters['zuul']
|
||||
self.assertEqual(str(A.number), zuulvars['change'])
|
||||
self.assertEqual(str(A.patch_number), zuulvars['patchset'])
|
||||
self.assertEqual(str(A.sha), zuulvars['patchset'])
|
||||
self.assertEqual('master', zuulvars['branch'])
|
||||
self.assertEquals('https://gitlab/org/project/merge_requests/1',
|
||||
zuulvars['items'][0]['change_url'])
|
||||
|
@ -112,6 +112,64 @@ class TestGitlabDriver(ZuulTestCase):
|
|||
A.notes[1]['body'],
|
||||
MatchesRegex(r'.*project-test2.*SUCCESS.*', re.DOTALL))
|
||||
|
||||
@simple_layout('layouts/basic-gitlab.yaml', driver='gitlab')
|
||||
def test_merge_request_updated(self):
|
||||
|
||||
A = self.fake_gitlab.openFakeMergeRequest('org/project', 'master', 'A')
|
||||
mr_tip1_sha = A.sha
|
||||
self.fake_gitlab.emitEvent(A.getMergeRequestOpenedEvent())
|
||||
self.waitUntilSettled()
|
||||
self.assertEqual(2, len(self.history))
|
||||
self.assertHistory(
|
||||
[
|
||||
{'name': 'project-test1', 'changes': '1,%s' % mr_tip1_sha},
|
||||
{'name': 'project-test2', 'changes': '1,%s' % mr_tip1_sha},
|
||||
], ordered=False
|
||||
)
|
||||
|
||||
self.fake_gitlab.emitEvent(A.getMergeRequestUpdatedEvent())
|
||||
mr_tip2_sha = A.sha
|
||||
self.waitUntilSettled()
|
||||
self.assertEqual(4, len(self.history))
|
||||
self.assertHistory(
|
||||
[
|
||||
{'name': 'project-test1', 'changes': '1,%s' % mr_tip1_sha},
|
||||
{'name': 'project-test2', 'changes': '1,%s' % mr_tip1_sha},
|
||||
{'name': 'project-test1', 'changes': '1,%s' % mr_tip2_sha},
|
||||
{'name': 'project-test2', 'changes': '1,%s' % mr_tip2_sha}
|
||||
], ordered=False
|
||||
)
|
||||
|
||||
@simple_layout('layouts/basic-gitlab.yaml', driver='gitlab')
|
||||
def test_merge_request_updated_builds_aborted(self):
|
||||
|
||||
A = self.fake_gitlab.openFakeMergeRequest('org/project', 'master', 'A')
|
||||
mr_tip1_sha = A.sha
|
||||
|
||||
self.executor_server.hold_jobs_in_build = True
|
||||
|
||||
self.fake_gitlab.emitEvent(A.getMergeRequestOpenedEvent())
|
||||
self.waitUntilSettled()
|
||||
|
||||
self.fake_gitlab.emitEvent(A.getMergeRequestUpdatedEvent())
|
||||
mr_tip2_sha = A.sha
|
||||
self.waitUntilSettled()
|
||||
|
||||
self.executor_server.hold_jobs_in_build = False
|
||||
self.executor_server.release()
|
||||
self.waitUntilSettled()
|
||||
|
||||
self.assertHistory(
|
||||
[
|
||||
{'name': 'project-test1', 'result': 'ABORTED',
|
||||
'changes': '1,%s' % mr_tip1_sha},
|
||||
{'name': 'project-test2', 'result': 'ABORTED',
|
||||
'changes': '1,%s' % mr_tip1_sha},
|
||||
{'name': 'project-test1', 'changes': '1,%s' % mr_tip2_sha},
|
||||
{'name': 'project-test2', 'changes': '1,%s' % mr_tip2_sha}
|
||||
], ordered=False
|
||||
)
|
||||
|
||||
@simple_layout('layouts/basic-gitlab.yaml', driver='gitlab')
|
||||
def test_merge_request_commented(self):
|
||||
|
||||
|
|
|
@ -195,7 +195,7 @@ class GitlabEventConnector(threading.Thread):
|
|||
project = self.connection.source.getProject(event.project_name)
|
||||
self.connection._getChange(project,
|
||||
event.change_number,
|
||||
event.patch_number,
|
||||
patchset=event.patch_number,
|
||||
refresh=True,
|
||||
url=event.change_url,
|
||||
event=event)
|
||||
|
@ -383,7 +383,7 @@ class GitlabConnection(BaseConnection):
|
|||
self.log.info("Getting change for %s#%s" % (
|
||||
project, event.change_number))
|
||||
change = self._getChange(
|
||||
project, event.change_number, event.patch_number,
|
||||
project, event.change_number, patchset=event.patch_number,
|
||||
refresh=refresh, event=event)
|
||||
change.source_event = event
|
||||
change.is_current_patchset = (change.patchset ==
|
||||
|
|
|
@ -20,6 +20,7 @@ EMPTY_GIT_REF = '0' * 40 # git sha of all zeros, used during creates/deletes
|
|||
|
||||
|
||||
class MergeRequest(Change):
|
||||
|
||||
def __init__(self, project):
|
||||
super(MergeRequest, self).__init__(project)
|
||||
self.updated_at = None
|
||||
|
@ -67,7 +68,7 @@ class GitlabTriggerEvent(TriggerEvent):
|
|||
return ' '.join(r)
|
||||
|
||||
def isPatchsetCreated(self):
|
||||
if self.type == 'gl_pull_request':
|
||||
if self.type == 'gl_merge_request':
|
||||
return self.action in ['opened', 'changed']
|
||||
return False
|
||||
|
||||
|
|
Loading…
Reference in New Issue