summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2023-01-17 19:16:16 +0000
committerGerrit Code Review <review@openstack.org>2023-01-17 19:16:16 +0000
commit28eefca0de89a9f30d4698b3ad49e6579ee2e6fb (patch)
tree3aaa1f73a02d224b48330e8486d1e8486a715287 /tests
parent8e69a631f8eaf680782ab37f3c2da872351a1a2d (diff)
parent3f3101216e54e8e1ae5cac658ae8910ccc5efcbd (diff)
downloadzuul-28eefca0de89a9f30d4698b3ad49e6579ee2e6fb.tar.gz
Merge "Honor independent pipeline requirements for non-live changes"
Diffstat (limited to 'tests')
-rw-r--r--tests/fixtures/config/requirements/trusted-check/git/common-config/playbooks/base.yaml2
-rw-r--r--tests/fixtures/config/requirements/trusted-check/git/common-config/zuul.yaml41
-rw-r--r--tests/fixtures/config/requirements/trusted-check/git/gh_project/README1
-rw-r--r--tests/fixtures/config/requirements/trusted-check/git/org_project/README1
-rw-r--r--tests/fixtures/config/requirements/trusted-check/main.yaml11
-rw-r--r--tests/fixtures/config/zuultrigger/parent-change-enqueued/git/common-config/zuul.yaml4
-rw-r--r--tests/unit/test_requirements.py37
-rw-r--r--tests/unit/test_scheduler.py1
-rw-r--r--tests/unit/test_zuultrigger.py12
9 files changed, 103 insertions, 7 deletions
diff --git a/tests/fixtures/config/requirements/trusted-check/git/common-config/playbooks/base.yaml b/tests/fixtures/config/requirements/trusted-check/git/common-config/playbooks/base.yaml
new file mode 100644
index 000000000..f679dceae
--- /dev/null
+++ b/tests/fixtures/config/requirements/trusted-check/git/common-config/playbooks/base.yaml
@@ -0,0 +1,2 @@
+- hosts: all
+ tasks: []
diff --git a/tests/fixtures/config/requirements/trusted-check/git/common-config/zuul.yaml b/tests/fixtures/config/requirements/trusted-check/git/common-config/zuul.yaml
new file mode 100644
index 000000000..494cd3cc7
--- /dev/null
+++ b/tests/fixtures/config/requirements/trusted-check/git/common-config/zuul.yaml
@@ -0,0 +1,41 @@
+- pipeline:
+ name: trusted-check
+ manager: independent
+ allow-other-connections: false
+ require:
+ gerrit:
+ approval:
+ - Code-Review: 2
+ trigger:
+ gerrit:
+ - event: patchset-created
+ success:
+ gerrit:
+ Verified: 1
+ failure:
+ gerrit:
+ Verified: -1
+
+- job:
+ name: base
+ parent: null
+ run: playbooks/base.yaml
+ nodeset:
+ nodes:
+ - label: ubuntu-xenial
+ name: controller
+
+- job:
+ name: check-job
+
+- project:
+ name: org/project
+ trusted-check:
+ jobs:
+ - check-job
+
+- project:
+ name: gh/project
+ trusted-check:
+ jobs:
+ - check-job
diff --git a/tests/fixtures/config/requirements/trusted-check/git/gh_project/README b/tests/fixtures/config/requirements/trusted-check/git/gh_project/README
new file mode 100644
index 000000000..9daeafb98
--- /dev/null
+++ b/tests/fixtures/config/requirements/trusted-check/git/gh_project/README
@@ -0,0 +1 @@
+test
diff --git a/tests/fixtures/config/requirements/trusted-check/git/org_project/README b/tests/fixtures/config/requirements/trusted-check/git/org_project/README
new file mode 100644
index 000000000..9daeafb98
--- /dev/null
+++ b/tests/fixtures/config/requirements/trusted-check/git/org_project/README
@@ -0,0 +1 @@
+test
diff --git a/tests/fixtures/config/requirements/trusted-check/main.yaml b/tests/fixtures/config/requirements/trusted-check/main.yaml
new file mode 100644
index 000000000..c8deb36c1
--- /dev/null
+++ b/tests/fixtures/config/requirements/trusted-check/main.yaml
@@ -0,0 +1,11 @@
+- tenant:
+ name: tenant-one
+ source:
+ gerrit:
+ config-projects:
+ - common-config
+ untrusted-projects:
+ - org/project
+ github:
+ untrusted-projects:
+ - gh/project
diff --git a/tests/fixtures/config/zuultrigger/parent-change-enqueued/git/common-config/zuul.yaml b/tests/fixtures/config/zuultrigger/parent-change-enqueued/git/common-config/zuul.yaml
index 3fcc43ce6..975b9713e 100644
--- a/tests/fixtures/config/zuultrigger/parent-change-enqueued/git/common-config/zuul.yaml
+++ b/tests/fixtures/config/zuultrigger/parent-change-enqueued/git/common-config/zuul.yaml
@@ -4,7 +4,7 @@
require:
gerrit:
approval:
- - Verified: -1
+ - email: for-check@example.com
trigger:
gerrit:
- event: patchset-created
@@ -24,7 +24,7 @@
require:
gerrit:
approval:
- - Verified: 1
+ - email: for-gate@example.com
trigger:
gerrit:
- event: comment-added
diff --git a/tests/unit/test_requirements.py b/tests/unit/test_requirements.py
index 9a32e4b21..9f3b87187 100644
--- a/tests/unit/test_requirements.py
+++ b/tests/unit/test_requirements.py
@@ -453,3 +453,40 @@ class TestRequirementsReject(ZuulTestCase):
self.fake_gerrit.addEvent(comment)
self.waitUntilSettled()
self.assertEqual(len(self.history), 3)
+
+
+class TestRequirementsTrustedCheck(ZuulTestCase):
+ config_file = "zuul-gerrit-github.conf"
+ tenant_config_file = "config/requirements/trusted-check/main.yaml"
+
+ def test_non_live_requirements(self):
+ # Test that pipeline requirements are applied to non-live
+ # changes.
+ A = self.fake_gerrit.addFakeChange('org/project', 'master', 'A')
+ B = self.fake_gerrit.addFakeChange('org/project', 'master', 'B')
+ B.setDependsOn(A, 1)
+ B.addApproval('Code-Review', 2)
+
+ self.fake_gerrit.addEvent(B.getPatchsetCreatedEvent(1))
+ self.waitUntilSettled()
+ self.assertHistory([])
+
+ self.fake_gerrit.addEvent(A.addApproval('Code-Review', 2))
+ self.fake_gerrit.addEvent(B.getPatchsetCreatedEvent(1))
+ self.waitUntilSettled()
+ self.assertHistory([
+ dict(name='check-job', result='SUCCESS', changes='1,1 2,1')],
+ ordered=False)
+
+ def test_other_connections(self):
+ # Test allow-other-connections: False
+ A = self.fake_github.openFakePullRequest("gh/project", "master", "A")
+ B = self.fake_gerrit.addFakeChange('org/project', 'master', 'B')
+ B.data["commitMessage"] = "{}\n\nDepends-On: {}\n".format(
+ B.subject, A.url,
+ )
+ B.addApproval('Code-Review', 2)
+
+ self.fake_gerrit.addEvent(B.getPatchsetCreatedEvent(1))
+ self.waitUntilSettled()
+ self.assertHistory([])
diff --git a/tests/unit/test_scheduler.py b/tests/unit/test_scheduler.py
index 5c36e6621..3a6544937 100644
--- a/tests/unit/test_scheduler.py
+++ b/tests/unit/test_scheduler.py
@@ -2807,6 +2807,7 @@ class TestScheduler(ZuulTestCase):
B = self.fake_gerrit.addFakeChange('org/project1', 'master', 'B')
B.data['commitMessage'] = '%s\n\nDepends-On: %s\n' % (
B.subject, A.data['url'])
+ A.addApproval('Code-Review', 2)
B.addApproval('Code-Review', 2)
self.executor_server.hold_jobs_in_build = True
diff --git a/tests/unit/test_zuultrigger.py b/tests/unit/test_zuultrigger.py
index 25bfd4c30..f649f4723 100644
--- a/tests/unit/test_zuultrigger.py
+++ b/tests/unit/test_zuultrigger.py
@@ -35,9 +35,10 @@ class TestZuulTriggerParentChangeEnqueued(ZuulTestCase):
A.addApproval('Code-Review', 2)
B1.addApproval('Code-Review', 2)
B2.addApproval('Code-Review', 2)
- A.addApproval('Verified', 1) # required by gate
- B1.addApproval('Verified', -1) # should go to check
- B2.addApproval('Verified', 1) # should go to gate
+ A.addApproval('Verified', 1, username="for-check") # reqd by check
+ A.addApproval('Verified', 1, username="for-gate") # reqd by gate
+ B1.addApproval('Verified', 1, username="for-check") # go to check
+ B2.addApproval('Verified', 1, username="for-gate") # go to gate
B1.addApproval('Approved', 1)
B2.addApproval('Approved', 1)
B1.setDependsOn(A, 1)
@@ -75,9 +76,9 @@ class TestZuulTriggerParentChangeEnqueued(ZuulTestCase):
self.scheds.first.sched, "addTriggerEvent", addTriggerEvent
):
C = self.fake_gerrit.addFakeChange('org/project', 'master', 'C')
- C.addApproval('Verified', -1)
+ C.addApproval('Verified', 1, username="for-check")
D = self.fake_gerrit.addFakeChange('org/project', 'master', 'D')
- D.addApproval('Verified', -1)
+ D.addApproval('Verified', 1, username="for-check")
D.setDependsOn(C, 1)
self.fake_gerrit.addEvent(C.getPatchsetCreatedEvent(1))
@@ -108,6 +109,7 @@ class TestZuulTriggerParentChangeEnqueuedGithub(ZuulGithubAppTestCase):
B1.addReview('derp', 'APPROVED')
B2.addReview('derp', 'APPROVED')
A.addLabel('for-gate') # required by gate
+ A.addLabel('for-check') # required by check
B1.addLabel('for-check') # should go to check
B2.addLabel('for-gate') # should go to gate