summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/fixtures/layouts/requirements-github.yaml48
-rw-r--r--tests/unit/test_github_requirements.py40
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',