diff --git a/unit_tests/utilities/test_zaza_utilities_os_versions.py b/unit_tests/utilities/test_zaza_utilities_os_versions.py new file mode 100644 index 000000000..60a2b149e --- /dev/null +++ b/unit_tests/utilities/test_zaza_utilities_os_versions.py @@ -0,0 +1,32 @@ +# Copyright 2023 Canonical Ltd. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +import unit_tests.utils as ut_utils +from zaza.openstack.utilities import os_versions + + +class TestOpenStackUtils(ut_utils.BaseTestCase): + + def test_compare_openstack(self): + antelope = os_versions.CompareOpenStack('antelope') + zed = os_versions.CompareOpenStack('zed') + yoga = os_versions.CompareOpenStack('yoga') + self.assertGreater(antelope, zed) + self.assertLess(zed, antelope) + self.assertGreaterEqual(zed, zed) + self.assertGreaterEqual(antelope, yoga) + self.assertGreaterEqual(zed, yoga) + + self.assertEqual("CompareOpenStack", repr(zed)) diff --git a/zaza/openstack/utilities/os_versions.py b/zaza/openstack/utilities/os_versions.py index fd8de2b71..822be69a2 100644 --- a/zaza/openstack/utilities/os_versions.py +++ b/zaza/openstack/utilities/os_versions.py @@ -359,6 +359,10 @@ def __le__(self, other): """Do less than or equals.""" return not self.__gt__(other) + def __repr__(self): + """Return the representation of CompareOpenStack.""" + return "%s<%s>" % (self.__class__.__name__, self._list[self.index]) + def __str__(self): """Give back the item at the index. @@ -384,3 +388,15 @@ class CompareHostReleases(BasicStringComparator): """ _list = UBUNTU_RELEASES + + +class CompareOpenStack(BasicStringComparator): + """Provide comparisons of OpenStack releases. + + Use in the form of + + if CompareOpenStack(release) > 'yoga': + # do something + """ + + _list = list(OPENSTACK_CODENAMES.values())