summaryrefslogtreecommitdiff
path: root/tests/unit/test_github_driver.py
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2020-05-16 17:32:14 +0000
committerGerrit Code Review <review@openstack.org>2020-05-16 17:32:14 +0000
commit931eac4030cc7e8e1a13a1e32947db90f37219a5 (patch)
tree4ec0e70d458f61be7079186656c0317d405a099a /tests/unit/test_github_driver.py
parent70dd710ed723ab0bfb96b6a7901a5a14178ed57b (diff)
parentaf2c919ca727a80170aeac396441e37b50fc753b (diff)
downloadzuul-931eac4030cc7e8e1a13a1e32947db90f37219a5.tar.gz
Merge "Report dequeued changes via Github checks API"
Diffstat (limited to 'tests/unit/test_github_driver.py')
-rw-r--r--tests/unit/test_github_driver.py55
1 files changed, 55 insertions, 0 deletions
diff --git a/tests/unit/test_github_driver.py b/tests/unit/test_github_driver.py
index 0558c9994..39c33440a 100644
--- a/tests/unit/test_github_driver.py
+++ b/tests/unit/test_github_driver.py
@@ -1685,6 +1685,61 @@ class TestGithubAppDriver(ZuulGithubAppTestCase):
self.assertTrue(A.is_merged)
@simple_layout("layouts/reporting-github.yaml", driver="github")
+ def test_reporting_checks_api_dequeue(self):
+ "Test that a dequeued change will be reported back to the check run"
+ project = "org/project3"
+ github = self.fake_github.getGithubClient(None)
+
+ 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(project, "master", "A")
+ self.fake_github.emitEvent(A.getPullRequestOpenedEvent())
+ self.waitUntilSettled()
+
+ # We should have a pending check for the head sha
+ self.assertIn(
+ A.head_sha, github.repo_from_project(project)._commits.keys())
+ check_runs = self.fake_github.getCommitChecks(project, A.head_sha)
+
+ self.assertEqual(1, len(check_runs))
+ check_run = check_runs[0]
+
+ self.assertEqual("tenant-one/checks-api-reporting", check_run["name"])
+ self.assertEqual("in_progress", check_run["status"])
+ self.assertThat(
+ check_run["output"]["summary"],
+ MatchesRegex(r'.*Starting checks-api-reporting jobs.*', re.DOTALL)
+ )
+
+ # Use the client to dequeue the pending change
+ client.dequeue(
+ tenant="tenant-one",
+ pipeline="checks-api-reporting",
+ project="org/project3",
+ change="{},{}".format(A.number, A.head_sha),
+ ref=None,
+ )
+ self.waitUntilSettled()
+
+ # We should now have a cancelled check run for the head sha
+ check_runs = self.fake_github.getCommitChecks(project, A.head_sha)
+ self.assertEqual(1, len(check_runs))
+ check_run = check_runs[0]
+
+ self.assertEqual("tenant-one/checks-api-reporting", check_run["name"])
+ self.assertEqual("completed", check_run["status"])
+ self.assertEqual("cancelled", check_run["conclusion"])
+ self.assertThat(
+ check_run["output"]["summary"],
+ MatchesRegex(r'.*Build canceled.*', re.DOTALL)
+ )
+ self.assertIsNotNone(check_run["completed_at"])
+
+ @simple_layout("layouts/reporting-github.yaml", driver="github")
def test_update_non_existing_check_run(self):
project = "org/project3"
github = self.fake_github.getGithubClient(None)