Merge "Fix manual dequeue of github items"
This commit is contained in:
commit
2baecbeb41
|
@ -1228,7 +1228,7 @@ class FakeGithubConnection(githubconnection.GithubConnection):
|
||||||
self.getGithubClient(project).addProject(project)
|
self.getGithubClient(project).addProject(project)
|
||||||
|
|
||||||
def _getPullReviews(self, owner, project, number):
|
def _getPullReviews(self, owner, project, number):
|
||||||
pr = self.pull_requests[number]
|
pr = self.pull_requests[int(number)]
|
||||||
return pr.reviews
|
return pr.reviews
|
||||||
|
|
||||||
def getGitUrl(self, project):
|
def getGitUrl(self, project):
|
||||||
|
@ -1246,13 +1246,13 @@ class FakeGithubConnection(githubconnection.GithubConnection):
|
||||||
def commentPull(self, project, pr_number, message):
|
def commentPull(self, project, pr_number, message):
|
||||||
# record that this got reported
|
# record that this got reported
|
||||||
self.reports.append((project, pr_number, 'comment'))
|
self.reports.append((project, pr_number, 'comment'))
|
||||||
pull_request = self.pull_requests[pr_number]
|
pull_request = self.pull_requests[int(pr_number)]
|
||||||
pull_request.addComment(message)
|
pull_request.addComment(message)
|
||||||
|
|
||||||
def mergePull(self, project, pr_number, commit_message='', sha=None):
|
def mergePull(self, project, pr_number, commit_message='', sha=None):
|
||||||
# record that this got reported
|
# record that this got reported
|
||||||
self.reports.append((project, pr_number, 'merge'))
|
self.reports.append((project, pr_number, 'merge'))
|
||||||
pull_request = self.pull_requests[pr_number]
|
pull_request = self.pull_requests[int(pr_number)]
|
||||||
if self.merge_failure:
|
if self.merge_failure:
|
||||||
raise Exception('Pull request was not merged')
|
raise Exception('Pull request was not merged')
|
||||||
if self.merge_not_allowed_count > 0:
|
if self.merge_not_allowed_count > 0:
|
||||||
|
@ -1272,7 +1272,7 @@ class FakeGithubConnection(githubconnection.GithubConnection):
|
||||||
def labelPull(self, project, pr_number, label):
|
def labelPull(self, project, pr_number, label):
|
||||||
# record that this got reported
|
# record that this got reported
|
||||||
self.reports.append((project, pr_number, 'label', label))
|
self.reports.append((project, pr_number, 'label', label))
|
||||||
pull_request = self.pull_requests[pr_number]
|
pull_request = self.pull_requests[int(pr_number)]
|
||||||
pull_request.addLabel(label)
|
pull_request.addLabel(label)
|
||||||
|
|
||||||
def unlabelPull(self, project, pr_number, label):
|
def unlabelPull(self, project, pr_number, label):
|
||||||
|
|
|
@ -379,7 +379,7 @@ class FakeGithubClient(object):
|
||||||
project_name, self._data)
|
project_name, self._data)
|
||||||
|
|
||||||
def pull_request(self, owner, project, number):
|
def pull_request(self, owner, project, number):
|
||||||
fake_pr = self._data.pull_requests[number]
|
fake_pr = self._data.pull_requests[int(number)]
|
||||||
return FakePull(fake_pr)
|
return FakePull(fake_pr)
|
||||||
|
|
||||||
def search_issues(self, query):
|
def search_issues(self, query):
|
||||||
|
|
|
@ -23,6 +23,8 @@ from unittest import mock, skip
|
||||||
import git
|
import git
|
||||||
import github3.exceptions
|
import github3.exceptions
|
||||||
|
|
||||||
|
import zuul.rpcclient
|
||||||
|
|
||||||
from tests.base import ZuulTestCase, simple_layout, random_sha1
|
from tests.base import ZuulTestCase, simple_layout, random_sha1
|
||||||
from tests.base import ZuulWebFixture
|
from tests.base import ZuulWebFixture
|
||||||
|
|
||||||
|
@ -52,6 +54,8 @@ class TestGithubDriver(ZuulTestCase):
|
||||||
self.assertEqual(str(A.number), zuulvars['change'])
|
self.assertEqual(str(A.number), zuulvars['change'])
|
||||||
self.assertEqual(str(A.head_sha), zuulvars['patchset'])
|
self.assertEqual(str(A.head_sha), zuulvars['patchset'])
|
||||||
self.assertEqual('master', zuulvars['branch'])
|
self.assertEqual('master', zuulvars['branch'])
|
||||||
|
self.assertEquals('https://github.com/org/project/pull/1',
|
||||||
|
zuulvars['items'][0]['change_url'])
|
||||||
self.assertEqual(1, len(A.comments))
|
self.assertEqual(1, len(A.comments))
|
||||||
self.assertThat(
|
self.assertThat(
|
||||||
A.comments[0],
|
A.comments[0],
|
||||||
|
@ -935,6 +939,67 @@ class TestGithubDriver(ZuulTestCase):
|
||||||
new_sha='0' * 40,
|
new_sha='0' * 40,
|
||||||
modified_files=['README.md'])
|
modified_files=['README.md'])
|
||||||
|
|
||||||
|
@simple_layout('layouts/basic-github.yaml', driver='github')
|
||||||
|
def test_client_dequeue_change_github(self):
|
||||||
|
"Test that the RPC client can dequeue a github pull request"
|
||||||
|
|
||||||
|
client = zuul.rpcclient.RPCClient('127.0.0.1',
|
||||||
|
self.gearman_server.port)
|
||||||
|
self.addCleanup(client.shutdown)
|
||||||
|
|
||||||
|
self.executor_server.hold_jobs_in_build = True
|
||||||
|
A = self.fake_github.openFakePullRequest('org/project', 'master', 'A')
|
||||||
|
|
||||||
|
self.fake_github.emitEvent(A.getPullRequestOpenedEvent())
|
||||||
|
self.waitUntilSettled()
|
||||||
|
|
||||||
|
client.dequeue(
|
||||||
|
tenant='tenant-one',
|
||||||
|
pipeline='check',
|
||||||
|
project='org/project',
|
||||||
|
change='{},{}'.format(A.number, A.head_sha),
|
||||||
|
ref=None)
|
||||||
|
|
||||||
|
self.waitUntilSettled()
|
||||||
|
|
||||||
|
tenant = self.sched.abide.tenants.get('tenant-one')
|
||||||
|
check_pipeline = tenant.layout.pipelines['check']
|
||||||
|
self.assertEqual(check_pipeline.getAllItems(), [])
|
||||||
|
self.assertEqual(self.countJobResults(self.history, 'ABORTED'), 2)
|
||||||
|
|
||||||
|
self.executor_server.hold_jobs_in_build = False
|
||||||
|
self.executor_server.release()
|
||||||
|
self.waitUntilSettled()
|
||||||
|
|
||||||
|
@simple_layout('layouts/basic-github.yaml', driver='github')
|
||||||
|
def test_client_enqueue_change_github(self):
|
||||||
|
"Test that the RPC client can enqueue a pull request"
|
||||||
|
A = self.fake_github.openFakePullRequest('org/project', 'master', 'A')
|
||||||
|
|
||||||
|
client = zuul.rpcclient.RPCClient('127.0.0.1',
|
||||||
|
self.gearman_server.port)
|
||||||
|
self.addCleanup(client.shutdown)
|
||||||
|
r = client.enqueue(tenant='tenant-one',
|
||||||
|
pipeline='check',
|
||||||
|
project='org/project',
|
||||||
|
trigger='github',
|
||||||
|
change='{},{}'.format(A.number, A.head_sha))
|
||||||
|
self.waitUntilSettled()
|
||||||
|
|
||||||
|
self.assertEqual(self.getJobFromHistory('project-test1').result,
|
||||||
|
'SUCCESS')
|
||||||
|
self.assertEqual(self.getJobFromHistory('project-test2').result,
|
||||||
|
'SUCCESS')
|
||||||
|
self.assertEqual(r, True)
|
||||||
|
|
||||||
|
# check that change_url is correct
|
||||||
|
job1_params = self.getJobFromHistory('project-test1').parameters
|
||||||
|
job2_params = self.getJobFromHistory('project-test2').parameters
|
||||||
|
self.assertEquals('https://github.com/org/project/pull/1',
|
||||||
|
job1_params['zuul']['items'][0]['change_url'])
|
||||||
|
self.assertEquals('https://github.com/org/project/pull/1',
|
||||||
|
job2_params['zuul']['items'][0]['change_url'])
|
||||||
|
|
||||||
|
|
||||||
class TestGithubUnprotectedBranches(ZuulTestCase):
|
class TestGithubUnprotectedBranches(ZuulTestCase):
|
||||||
config_file = 'zuul-github-driver.conf'
|
config_file = 'zuul-github-driver.conf'
|
||||||
|
|
|
@ -786,7 +786,12 @@ class GithubConnection(BaseConnection):
|
||||||
if event.change_number:
|
if event.change_number:
|
||||||
change = self._getChange(project, event.change_number,
|
change = self._getChange(project, event.change_number,
|
||||||
event.patch_number, refresh=refresh)
|
event.patch_number, refresh=refresh)
|
||||||
change.url = event.change_url
|
if hasattr(event, 'change_url') and event.change_url:
|
||||||
|
change.url = event.change_url
|
||||||
|
else:
|
||||||
|
# The event has no change url so just construct it
|
||||||
|
change.url = self.getPullUrl(
|
||||||
|
event.project_name, event.change_number)
|
||||||
change.uris = [
|
change.uris = [
|
||||||
'%s/%s/pull/%s' % (self.server, project, change.number),
|
'%s/%s/pull/%s' % (self.server, project, change.number),
|
||||||
]
|
]
|
||||||
|
|
Loading…
Reference in New Issue