diff options
author | Joshua Hesketh <josh@nitrotech.org> | 2019-01-31 15:10:56 +1100 |
---|---|---|
committer | Tristan Cacqueray <tdecacqu@redhat.com> | 2019-03-22 00:07:43 +0000 |
commit | 4bf0fb03d823e0018734f4549b11663524ae2536 (patch) | |
tree | ec9433ff797ff0881fbce4c2f839807d37fbd40b /tests | |
parent | efae4deec5b538e90b88d690346a58538bd5cfff (diff) | |
download | zuul-4bf0fb03d823e0018734f4549b11663524ae2536.tar.gz |
Add API endpoint to get frozen jobs
This allows a developer to query what the jobs will look like for a
project against a pipeline for a branch tip. It will return the list of
jobs and their dependencies that will be used in the pipeline buildset.
The idea is that this will be consumable as a way of reconstructing jobs
locally for debugging.
Change-Id: I89afac1fd4ebe7924ad60dfc689dc9018726c133
Co-Authored-By: Tristan Cacqueray <tdecacqu@redhat.com>
Diffstat (limited to 'tests')
-rwxr-xr-x | tests/unit/test_web.py | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/tests/unit/test_web.py b/tests/unit/test_web.py index 2026a24d5..810b48e6f 100755 --- a/tests/unit/test_web.py +++ b/tests/unit/test_web.py @@ -687,6 +687,53 @@ class TestWeb(BaseTestWeb): job = self.get_url("api/tenant/tenant-one/job/noop").json() self.assertEqual("noop", job[0]["name"]) + def test_freeze_jobs(self): + # Test can get a list of the jobs for a given project+pipeline+branch. + resp = self.get_url( + "api/tenant/tenant-one/pipeline/check" + "/project/org/project1/branch/master/freeze-jobs") + + freeze_jobs = [{ + 'name': 'project-merge', + 'dependencies': [], + }, { + 'name': 'project-test1', + 'dependencies': [{ + 'name': 'project-merge', + 'soft': False, + }], + }, { + 'name': 'project-test2', + 'dependencies': [{ + 'name': 'project-merge', + 'soft': False, + }], + }, { + 'name': 'project1-project2-integration', + 'dependencies': [{ + 'name': 'project-merge', + 'soft': False, + }], + }] + self.assertEqual(freeze_jobs, resp.json()) + + def test_freeze_jobs_set_includes_all_jobs(self): + # When freezing a job set we want to include all jobs even if they + # have certain matcher requirements (such as required files) since we + # can't otherwise evaluate them. + + resp = self.get_url( + "api/tenant/tenant-one/pipeline/gate" + "/project/org/project/branch/master/freeze-jobs") + expected = { + 'name': 'project-testfile', + 'dependencies': [{ + 'name': 'project-merge', + 'soft': False, + }], + } + self.assertIn(expected, resp.json()) + class TestWebSecrets(BaseTestWeb): tenant_config_file = 'config/secrets/main.yaml' |