diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/fixtures/layouts/requirements-github.yaml | 48 | ||||
-rw-r--r-- | tests/unit/test_github_requirements.py | 40 |
2 files changed, 88 insertions, 0 deletions
diff --git a/tests/fixtures/layouts/requirements-github.yaml b/tests/fixtures/layouts/requirements-github.yaml index 9e376b8b6..51870e5db 100644 --- a/tests/fixtures/layouts/requirements-github.yaml +++ b/tests/fixtures/layouts/requirements-github.yaml @@ -286,6 +286,34 @@ comment: true - pipeline: + name: require_draft + manager: independent + require: + github: + draft: true + trigger: + github: + - event: pull_request + action: changed + success: + github: + comment: true + +- pipeline: + name: reject_draft + manager: independent + reject: + github: + draft: true + trigger: + github: + - event: pull_request + action: changed + success: + github: + comment: true + +- pipeline: name: require_label manager: independent require: @@ -390,6 +418,14 @@ name: project16-require-check-run run: playbooks/project16-require-check-run.yaml +- job: + name: project17-require-draft + run: playbooks/project17-require-draft.yaml + +- job: + name: project18-reject-draft + run: playbooks/project18-reject-draft.yaml + - project: name: org/project1 pipeline: @@ -494,3 +530,15 @@ require_check_run: jobs: - project16-require-check-run + +- project: + name: org/project17 + require_draft: + jobs: + - project17-require-draft + +- project: + name: org/project18 + reject_draft: + jobs: + - project18-reject-draft diff --git a/tests/unit/test_github_requirements.py b/tests/unit/test_github_requirements.py index 0e2d2b7d5..ef1f75944 100644 --- a/tests/unit/test_github_requirements.py +++ b/tests/unit/test_github_requirements.py @@ -503,6 +503,46 @@ class TestGithubRequirements(ZuulTestCase): self.assertEqual(len(self.history), 1) @simple_layout('layouts/requirements-github.yaml', driver='github') + def test_require_draft(self): + + A = self.fake_github.openFakePullRequest('org/project17', 'master', + 'A', draft=True) + # A sync event that we will keep submitting to trigger + sync = A.getPullRequestSynchronizeEvent() + self.fake_github.emitEvent(sync) + self.waitUntilSettled() + + # PR is a draft, should enqueue + self.assertEqual(len(self.history), 1) + + # Make the PR not a draft + A.draft = False + self.fake_github.emitEvent(sync) + self.waitUntilSettled() + # PR is not a draft, should not enqueue + self.assertEqual(len(self.history), 1) + + @simple_layout('layouts/requirements-github.yaml', driver='github') + def test_reject_draft(self): + + A = self.fake_github.openFakePullRequest('org/project18', 'master', + 'A', draft=True) + # A sync event that we will keep submitting to trigger + sync = A.getPullRequestSynchronizeEvent() + self.fake_github.emitEvent(sync) + self.waitUntilSettled() + + # PR is a draft, should not enqueue + self.assertEqual(len(self.history), 0) + + # Make the PR not a draft + A.draft = False + self.fake_github.emitEvent(sync) + self.waitUntilSettled() + # PR is not a draft, should enqueue + self.assertEqual(len(self.history), 1) + + @simple_layout('layouts/requirements-github.yaml', driver='github') def test_pipeline_require_label(self): "Test pipeline requirement: label" A = self.fake_github.openFakePullRequest('org/project10', 'master', |