diff options
author | James E. Blair <jim@acmegating.com> | 2022-07-16 12:50:12 -0700 |
---|---|---|
committer | James E. Blair <jim@acmegating.com> | 2022-08-02 08:03:28 -0700 |
commit | 32223d46ebcd082631a30cc457726fd18f4b9a47 (patch) | |
tree | ef42eb1cbd25d0d3e632ace356eda3c1c9eafad7 | |
parent | fbb97bd6b6d039a81279fd01a66f9c7c6698a855 (diff) | |
download | zuul-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.py | 61 |
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()) |