diff options
-rw-r--r-- | tests/fixtures/config/single-tenant/git/org_project3/README | 1 | ||||
-rw-r--r-- | tests/fixtures/config/single-tenant/git/org_project3/zuul.yaml | 25 | ||||
-rw-r--r-- | tests/fixtures/config/single-tenant/main-model-upgrade.yaml | 11 | ||||
-rw-r--r-- | tests/unit/test_model_upgrade.py | 36 | ||||
-rw-r--r-- | zuul/model.py | 2 |
5 files changed, 72 insertions, 3 deletions
diff --git a/tests/fixtures/config/single-tenant/git/org_project3/README b/tests/fixtures/config/single-tenant/git/org_project3/README new file mode 100644 index 000000000..9daeafb98 --- /dev/null +++ b/tests/fixtures/config/single-tenant/git/org_project3/README @@ -0,0 +1 @@ +test diff --git a/tests/fixtures/config/single-tenant/git/org_project3/zuul.yaml b/tests/fixtures/config/single-tenant/git/org_project3/zuul.yaml new file mode 100644 index 000000000..3effc3cb4 --- /dev/null +++ b/tests/fixtures/config/single-tenant/git/org_project3/zuul.yaml @@ -0,0 +1,25 @@ +- project: + check: + jobs: + - project-merge + - project-test1: + dependencies: project-merge + - project-test2: + dependencies: project-merge + - project1-project2-integration: + dependencies: + - project-test1 + - project-test2 + gate: + queue: integrated + jobs: + - project-merge + - project-test1: + dependencies: project-merge + - project-test2: + dependencies: project-merge + - project1-project2-integration: + dependencies: + - project-merge + - project-test1 + - project-test2 diff --git a/tests/fixtures/config/single-tenant/main-model-upgrade.yaml b/tests/fixtures/config/single-tenant/main-model-upgrade.yaml new file mode 100644 index 000000000..919921e91 --- /dev/null +++ b/tests/fixtures/config/single-tenant/main-model-upgrade.yaml @@ -0,0 +1,11 @@ +- tenant: + name: tenant-one + source: + gerrit: + config-projects: + - common-config + untrusted-projects: + - org/project + - org/project1 + - org/project2 + - org/project3 diff --git a/tests/unit/test_model_upgrade.py b/tests/unit/test_model_upgrade.py index 536c4f91d..f4a18bdfc 100644 --- a/tests/unit/test_model_upgrade.py +++ b/tests/unit/test_model_upgrade.py @@ -35,7 +35,7 @@ def model_version(version): class TestModelUpgrade(ZuulTestCase): - tenant_config_file = "config/single-tenant/main.yaml" + tenant_config_file = "config/single-tenant/main-model-upgrade.yaml" scheduler_count = 1 def getJobData(self, tenant, pipeline): @@ -101,6 +101,40 @@ class TestModelUpgrade(ZuulTestCase): ], ordered=False) @model_version(4) + def test_model_4(self): + # Test that Zuul return values are correctly passed to child + # jobs in version 4 compatibility mode. + A = self.fake_gerrit.addFakeChange('org/project3', 'master', 'A') + fake_data = [ + {'name': 'image', + 'url': 'http://example.com/image', + 'metadata': { + 'type': 'container_image' + }}, + ] + self.executor_server.returnData( + 'project-merge', A, + {'zuul': {'artifacts': fake_data}} + ) + self.fake_gerrit.addEvent(A.getPatchsetCreatedEvent(1)) + self.waitUntilSettled() + + self.assertHistory([ + dict(name='project-merge', result='SUCCESS', changes='1,1'), + dict(name='project-test1', result='SUCCESS', changes='1,1'), + dict(name='project-test2', result='SUCCESS', changes='1,1'), + dict(name='project1-project2-integration', + result='SUCCESS', changes='1,1'), + ], ordered=False) + # Verify that the child jobs got the data from the parent + test1 = self.getJobFromHistory('project-test1') + self.assertEqual(fake_data[0]['url'], + test1.parameters['zuul']['artifacts'][0]['url']) + integration = self.getJobFromHistory('project1-project2-integration') + self.assertEqual(fake_data[0]['url'], + integration.parameters['zuul']['artifacts'][0]['url']) + + @model_version(4) def test_model_4_5(self): # Changes share a queue, but with only one job, the first # merges before the second starts. diff --git a/zuul/model.py b/zuul/model.py index 0bd5cb88b..79041cf86 100644 --- a/zuul/model.py +++ b/zuul/model.py @@ -3478,8 +3478,6 @@ class Build(zkobject.ZKObject): # Load the object from ZK data['_' + job_data_key] = JobData.fromZK( context, job_data['path']) - else: - data['_' + job_data_key] = None return data def getPath(self): |