From 4bf0fb03d823e0018734f4549b11663524ae2536 Mon Sep 17 00:00:00 2001 From: Joshua Hesketh Date: Thu, 31 Jan 2019 15:10:56 +1100 Subject: 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 --- tests/unit/test_web.py | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) (limited to 'tests') 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' -- cgit v1.2.1