summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorJoshua Hesketh <josh@nitrotech.org>2019-01-31 15:10:56 +1100
committerTristan Cacqueray <tdecacqu@redhat.com>2019-03-22 00:07:43 +0000
commit4bf0fb03d823e0018734f4549b11663524ae2536 (patch)
treeec9433ff797ff0881fbce4c2f839807d37fbd40b /tests
parentefae4deec5b538e90b88d690346a58538bd5cfff (diff)
downloadzuul-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-xtests/unit/test_web.py47
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'