diff options
author | Zuul <zuul@review.opendev.org> | 2020-05-16 17:32:14 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2020-05-16 17:32:14 +0000 |
commit | 931eac4030cc7e8e1a13a1e32947db90f37219a5 (patch) | |
tree | 4ec0e70d458f61be7079186656c0317d405a099a /tests/unit/test_github_driver.py | |
parent | 70dd710ed723ab0bfb96b6a7901a5a14178ed57b (diff) | |
parent | af2c919ca727a80170aeac396441e37b50fc753b (diff) | |
download | zuul-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.py | 55 |
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) |