Re-enable test_nonvoting_pipeline
Here we enabled our nonvoting pipeline test again. It seems we also
needed to create a check pipeline noop job, otherwise our pipeline
queues (for check) would not be empty.
Change-Id: I1269e8de632f847dbacbde187d609bbab1ac8179
Signed-off-by: Paul Belanger <pabelanger@redhat.com>
diff --git a/tests/fixtures/config/single-tenant/git/common-config/zuul.yaml b/tests/fixtures/config/single-tenant/git/common-config/zuul.yaml
index 01de2aa..de477dd 100644
--- a/tests/fixtures/config/single-tenant/git/common-config/zuul.yaml
+++ b/tests/fixtures/config/single-tenant/git/common-config/zuul.yaml
@@ -36,6 +36,19 @@
verified: 0
precedence: high
+- pipeline:
+ name: experimental
+ manager: independent
+ source:
+ gerrit
+ trigger:
+ gerrit:
+ - event: patchset-created
+ success:
+ gerrit: {}
+ failure:
+ gerrit: {}
+
- job:
name: project-merge
hold-following-changes: true
@@ -56,6 +69,9 @@
- job:
name: project-test2
+- job:
+ name: experimental-project-test
+
- project:
name: org/project
gate:
@@ -84,3 +100,11 @@
jobs:
- project-test1
- project-test2
+
+- project:
+ name: org/experimental-project
+ experimental:
+ jobs:
+ - project-merge:
+ jobs:
+ - experimental-project-test
diff --git a/tests/fixtures/config/single-tenant/git/org_experimental-project/README b/tests/fixtures/config/single-tenant/git/org_experimental-project/README
new file mode 100644
index 0000000..9daeafb
--- /dev/null
+++ b/tests/fixtures/config/single-tenant/git/org_experimental-project/README
@@ -0,0 +1 @@
+test
diff --git a/tests/test_scheduler.py b/tests/test_scheduler.py
index e812e32..2a74eeb 100755
--- a/tests/test_scheduler.py
+++ b/tests/test_scheduler.py
@@ -3884,7 +3884,6 @@
running_items = client.get_running_jobs()
self.assertEqual(0, len(running_items))
- @skip("Disabled for early v3 development")
def test_nonvoting_pipeline(self):
"Test that a nonvoting pipeline (experimental) can still report"
@@ -3892,6 +3891,9 @@
'master', 'A')
self.fake_gerrit.addEvent(A.getPatchsetCreatedEvent(1))
self.waitUntilSettled()
+
+ self.assertEqual(self.getJobFromHistory('project-merge').result,
+ 'SUCCESS')
self.assertEqual(
self.getJobFromHistory('experimental-project-test').result,
'SUCCESS')
diff --git a/zuul/manager/independent.py b/zuul/manager/independent.py
index d3b6b0d..3d28327 100644
--- a/zuul/manager/independent.py
+++ b/zuul/manager/independent.py
@@ -29,8 +29,6 @@
# creates a new change queue for every change
if existing:
return DynamicChangeQueueContextManager(existing)
- if change.project not in self.pipeline.getProjects():
- self.pipeline.addProject(change.project)
change_queue = model.ChangeQueue(self.pipeline)
change_queue.addProject(change.project)
self.pipeline.addQueue(change_queue)
diff --git a/zuul/model.py b/zuul/model.py
index 0aa1ad5..53c4646 100644
--- a/zuul/model.py
+++ b/zuul/model.py
@@ -1770,9 +1770,13 @@
def createJobTree(self, item):
project_config = self.project_configs[item.change.project.name]
- project_tree = project_config.pipelines[item.pipeline.name].job_tree
ret = JobTree(None)
- self._createJobTree(item.change, project_tree.job_trees, ret)
+ # NOTE(pabelanger): It is possible for a foreign project not to have a
+ # configured pipeline, if so return an empty JobTree.
+ if item.pipeline.name in project_config.pipelines:
+ project_tree = \
+ project_config.pipelines[item.pipeline.name].job_tree
+ self._createJobTree(item.change, project_tree.job_trees, ret)
return ret