summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames E. Blair <jim@acmegating.com>2022-07-16 12:50:12 -0700
committerJames E. Blair <jim@acmegating.com>2022-08-02 08:03:28 -0700
commit32223d46ebcd082631a30cc457726fd18f4b9a47 (patch)
treeef42eb1cbd25d0d3e632ace356eda3c1c9eafad7
parentfbb97bd6b6d039a81279fd01a66f9c7c6698a855 (diff)
downloadzuul-32223d46ebcd082631a30cc457726fd18f4b9a47.tar.gz
Add tests for zuul-client job-graph
Depends-On: https://review.opendev.org/850108 Change-Id: Ieb58888d06c910ad6529594999c09bd4feecd48d
-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())