From 15e3e20936ddc2ae58f73e6be86a327be45c4373 Mon Sep 17 00:00:00 2001 From: Paul Belanger Date: Fri, 14 Oct 2016 16:27:34 -0400 Subject: [PATCH] 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 --- .../single-tenant/git/common-config/zuul.yaml | 24 +++++++++++++++++++ .../git/org_experimental-project/README | 1 + tests/test_scheduler.py | 4 +++- zuul/manager/independent.py | 2 -- zuul/model.py | 8 +++++-- 5 files changed, 34 insertions(+), 5 deletions(-) create mode 100644 tests/fixtures/config/single-tenant/git/org_experimental-project/README 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 01de2aa19a..de477ddbc4 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 0000000000..9daeafb986 --- /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 e812e32f6e..2a74eebb08 100755 --- a/tests/test_scheduler.py +++ b/tests/test_scheduler.py @@ -3884,7 +3884,6 @@ For CI problems and help debugging, contact ci@example.org""" 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 @@ For CI problems and help debugging, contact ci@example.org""" '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 d3b6b0ddc2..3d28327f05 100644 --- a/zuul/manager/independent.py +++ b/zuul/manager/independent.py @@ -29,8 +29,6 @@ class IndependentPipelineManager(PipelineManager): # 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 0aa1ad584e..53c4646695 100644 --- a/zuul/model.py +++ b/zuul/model.py @@ -1770,9 +1770,13 @@ class Layout(object): 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