From 7e08c5cee8007b638e42d9e7faa6c6d1232700c3 Mon Sep 17 00:00:00 2001 From: "Gareth J. Greenaway" Date: Wed, 18 Sep 2019 17:01:44 -0700 Subject: [PATCH] Porting PR #52749 to 2019.2.1 --- salt/version.py | 7 ++++--- tests/unit/test_version.py | 14 +++++++++++++- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/salt/version.py b/salt/version.py index 56a870589a23..3984d500d02d 100644 --- a/salt/version.py +++ b/salt/version.py @@ -725,10 +725,11 @@ def versions_report(include_salt_cloud=False): Yield each version properly formatted for console output. ''' ver_info = versions_information(include_salt_cloud) - + not_installed = 'Not Installed' + ns_pad = len(not_installed) lib_pad = max(len(name) for name in ver_info['Dependency Versions']) sys_pad = max(len(name) for name in ver_info['System Versions']) - padding = max(lib_pad, sys_pad) + 1 + padding = max(lib_pad, sys_pad, ns_pad) + 1 fmt = '{0:>{pad}}: {1}' info = [] @@ -737,7 +738,7 @@ def versions_report(include_salt_cloud=False): # List dependencies in alphabetical, case insensitive order for name in sorted(ver_info[ver_type], key=lambda x: x.lower()): ver = fmt.format(name, - ver_info[ver_type][name] or 'Not Installed', + ver_info[ver_type][name] or not_installed, pad=padding) info.append(ver) info.append(' ') diff --git a/tests/unit/test_version.py b/tests/unit/test_version.py index afe9051e254a..25f4e95ea4fc 100644 --- a/tests/unit/test_version.py +++ b/tests/unit/test_version.py @@ -17,7 +17,7 @@ from tests.support.unit import TestCase # Import Salt libs -from salt.version import SaltStackVersion +from salt.version import SaltStackVersion, versions_report class VersionTestCase(TestCase): @@ -71,3 +71,15 @@ def test_unparsable_version(self): with self.assertRaises(ValueError): SaltStackVersion.parse('Drunk') + + def test_version_report_lines(self): + ''' + Validate padding in versions report is correct + ''' + # Get a set of all version report name lenghts including padding + line_lengths = set([ + len(line.split(':')[0]) for line in list(versions_report())[4:] + if line != ' ' and line != 'System Versions:' + ]) + # Check that they are all the same size (only one element in the set) + assert len(line_lengths) == 1