summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2022-08-16 19:29:34 +0000
committerGerrit Code Review <review@openstack.org>2022-08-16 19:29:34 +0000
commiteb32420e3aa9b17d8cb69df68337309cfed29974 (patch)
tree63aafed1444267f496b5bc0d89e607aa00c747c5
parent97c12cc3e6840e05a3897f6455281dea85b23cf3 (diff)
parent32223d46ebcd082631a30cc457726fd18f4b9a47 (diff)
downloadzuul-eb32420e3aa9b17d8cb69df68337309cfed29974.tar.gz
Merge "Add tests for zuul-client job-graph"
-rw-r--r--tests/zuul_client/test_zuulclient.py61
1 files changed, 61 insertions, 0 deletions
diff --git a/tests/zuul_client/test_zuulclient.py b/tests/zuul_client/test_zuulclient.py
index cc7d789c7..6dd813d73 100644
--- a/tests/zuul_client/test_zuulclient.py
+++ b/tests/zuul_client/test_zuulclient.py
@@ -629,3 +629,64 @@ class TestZuulClientBuildInfo(TestZuulClientQueryData,
x['url'] == 'http://example.com/docs'
for x in artifacts),
output)
+
+
+class TestZuulClientJobGraph(BaseTestWeb):
+ def _split_pretty_table(self, output):
+ lines = output.decode().split('\n')
+ headers = [x.strip() for x in lines[1].split('|') if x != '']
+ # Trim headers and last line of the table
+ return [dict(zip(headers,
+ [x.strip() for x in l.split('|') if x != '']))
+ for l in lines[3:-2]]
+
+ def test_job_graph(self):
+ """Test the job-graph command"""
+ p = subprocess.Popen(
+ ['zuul-client',
+ '--zuul-url', self.base_url,
+ 'job-graph',
+ '--tenant', 'tenant-one',
+ '--pipeline', 'check',
+ '--project', 'org/project1',
+ '--branch', 'master',
+ ],
+ stdout=subprocess.PIPE)
+ output, err = p.communicate()
+ self.assertEqual(p.returncode, 0, (output, err))
+ results = self._split_pretty_table(output)
+ expected = [
+ {'Job': 'project-merge', 'Dependencies': ''},
+ {'Job': 'project-test1', 'Dependencies': 'project-merge'},
+ {'Job': 'project-test2', 'Dependencies': 'project-merge'},
+ {'Job': 'project1-project2-integration',
+ 'Dependencies': 'project-merge'}
+ ]
+ self.assertEqual(results, expected)
+
+ def test_job_graph_dot(self):
+ """Test the job-graph command dot output"""
+ p = subprocess.Popen(
+ ['zuul-client',
+ '--format', 'dot',
+ '--zuul-url', self.base_url,
+ 'job-graph',
+ '--tenant', 'tenant-one',
+ '--pipeline', 'check',
+ '--project', 'org/project1',
+ '--branch', 'master',
+ ],
+ stdout=subprocess.PIPE)
+ output, err = p.communicate()
+ self.assertEqual(p.returncode, 0, (output, err))
+ expected = textwrap.dedent('''\
+ digraph job_graph {
+ rankdir=LR;
+ node [shape=box];
+ "project-merge";
+ "project-merge" -> "project-test1" [dir=back];
+ "project-merge" -> "project-test2" [dir=back];
+ "project-merge" -> "project1-project2-integration" [dir=back];
+ }
+ ''').encode('utf8')
+ self.assertEqual(output.strip(), expected.strip())