Move reports from FakeGithubConnection to github data

This is needed to handle comment pull as direct post request in the
followup. Further the reports are better located in the github data
since this needs to be global data.

Further this will be needed as preparation for the HA scheduler as
well since there will be more than one connection and the test data
needs to be centralized then.

Change-Id: I3fa96d43f0ffe62d50630856b23972221bf2c69a
This commit is contained in:
Tobias Henkel 2020-08-06 12:09:36 +02:00
parent ebb0b222ca
commit 688ecf6233
No known key found for this signature in database
GPG Key ID: 03750DEC158E5FA2
3 changed files with 14 additions and 12 deletions

View File

@ -2325,7 +2325,6 @@ class FakeGithubConnection(githubconnection.GithubConnection):
self.upstream_root = upstream_root self.upstream_root = upstream_root
self.merge_failure = False self.merge_failure = False
self.merge_not_allowed_count = 0 self.merge_not_allowed_count = 0
self.reports = []
self.github_data = tests.fakegithub.FakeGithubData(changes_db) self.github_data = tests.fakegithub.FakeGithubData(changes_db)
self._github_client_manager.github_data = self.github_data self._github_client_manager.github_data = self.github_data
@ -2417,27 +2416,28 @@ class FakeGithubConnection(githubconnection.GithubConnection):
def commentPull(self, project, pr_number, message, zuul_event_id=None): def commentPull(self, project, pr_number, message, zuul_event_id=None):
# record that this got reported # record that this got reported
self.reports.append((project, pr_number, 'comment')) self.github_data.reports.append((project, pr_number, 'comment'))
pull_request = self.pull_requests[int(pr_number)] pull_request = self.pull_requests[int(pr_number)]
pull_request.addComment(message) pull_request.addComment(message)
def setCommitStatus(self, project, sha, state, url='', description='', def setCommitStatus(self, project, sha, state, url='', description='',
context='default', user='zuul', zuul_event_id=None): context='default', user='zuul', zuul_event_id=None):
# record that this got reported and call original method # record that this got reported and call original method
self.reports.append((project, sha, 'status', (user, context, state))) self.github_data.reports.append(
(project, sha, 'status', (user, context, state)))
super(FakeGithubConnection, self).setCommitStatus( super(FakeGithubConnection, self).setCommitStatus(
project, sha, state, project, sha, state,
url=url, description=description, context=context) url=url, description=description, context=context)
def labelPull(self, project, pr_number, label, zuul_event_id=None): def labelPull(self, project, pr_number, label, zuul_event_id=None):
# record that this got reported # record that this got reported
self.reports.append((project, pr_number, 'label', label)) self.github_data.reports.append((project, pr_number, 'label', label))
pull_request = self.pull_requests[int(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, zuul_event_id=None): def unlabelPull(self, project, pr_number, label, zuul_event_id=None):
# record that this got reported # record that this got reported
self.reports.append((project, pr_number, 'unlabel', label)) self.github_data.reports.append((project, pr_number, 'unlabel', label))
pull_request = self.pull_requests[pr_number] pull_request = self.pull_requests[pr_number]
pull_request.removeLabel(label) pull_request.removeLabel(label)

View File

@ -506,7 +506,8 @@ class FakePull(object):
pr = self._fake_pull_request pr = self._fake_pull_request
# record that this got reported # record that this got reported
conn.reports.append((pr.project, pr.number, 'merge', merge_method)) conn.github_data.reports.append(
(pr.project, pr.number, 'merge', merge_method))
if conn.merge_failure: if conn.merge_failure:
raise Exception('Unknown merge failure') raise Exception('Unknown merge failure')
if conn.merge_not_allowed_count > 0: if conn.merge_not_allowed_count > 0:
@ -640,6 +641,7 @@ class FakeGithubData(object):
def __init__(self, pull_requests): def __init__(self, pull_requests):
self.pull_requests = pull_requests self.pull_requests = pull_requests
self.repos = {} self.repos = {}
self.reports = []
class FakeGithubClient(object): class FakeGithubClient(object):

View File

@ -567,10 +567,10 @@ class TestGithubDriver(ZuulTestCase):
self.waitUntilSettled() self.waitUntilSettled()
# there should only be one report, a status # there should only be one report, a status
self.assertEqual(1, len(self.fake_github.reports)) self.assertEqual(1, len(self.fake_github.github_data.reports))
# Verify the user/context/state of the status # Verify the user/context/state of the status
status = ('zuul', 'tenant-one/push-reporting', 'pending') status = ('zuul', 'tenant-one/push-reporting', 'pending')
self.assertEqual(status, self.fake_github.reports[0][-1]) self.assertEqual(status, self.fake_github.github_data.reports[0][-1])
# free the executor, allow the build to finish # free the executor, allow the build to finish
self.executor_server.hold_jobs_in_build = False self.executor_server.hold_jobs_in_build = False
@ -578,10 +578,10 @@ class TestGithubDriver(ZuulTestCase):
self.waitUntilSettled() self.waitUntilSettled()
# Now there should be a second report, the success of the build # Now there should be a second report, the success of the build
self.assertEqual(2, len(self.fake_github.reports)) self.assertEqual(2, len(self.fake_github.github_data.reports))
# Verify the user/context/state of the status # Verify the user/context/state of the status
status = ('zuul', 'tenant-one/push-reporting', 'success') status = ('zuul', 'tenant-one/push-reporting', 'success')
self.assertEqual(status, self.fake_github.reports[-1][-1]) self.assertEqual(status, self.fake_github.github_data.reports[-1][-1])
# now make a PR which should also comment # now make a PR which should also comment
self.executor_server.hold_jobs_in_build = True self.executor_server.hold_jobs_in_build = True
@ -591,7 +591,7 @@ class TestGithubDriver(ZuulTestCase):
# Now there should be a four reports, a new comment # Now there should be a four reports, a new comment
# and status # and status
self.assertEqual(4, len(self.fake_github.reports)) self.assertEqual(4, len(self.fake_github.github_data.reports))
self.executor_server.release() self.executor_server.release()
self.waitUntilSettled() self.waitUntilSettled()
@ -1285,7 +1285,7 @@ class TestGithubDriver(ZuulTestCase):
self.assertEqual(2, len(self.history)) self.assertEqual(2, len(self.history))
# now check if the merge was done via rebase # now check if the merge was done via rebase
merges = [report for report in self.fake_github.reports merges = [report for report in self.fake_github.github_data.reports
if report[2] == 'merge'] if report[2] == 'merge']
assert(len(merges) == 1 and merges[0][3] == 'squash') assert(len(merges) == 1 and merges[0][3] == 'squash')