From a1e34fc6dcbb515585b8fc37f26766e055c9f3fb Mon Sep 17 00:00:00 2001 From: Eric Harney Date: Wed, 23 Feb 2022 13:17:24 -0500 Subject: [PATCH] Add a unit test to keep microversions.py up to date This ensures that when _MAX_API_VERSION is bumped, a corresponding entry is added to microversions.py. This will prevent the issue fixed in Ifd30ee86e. Change-Id: Ie1a0bc863c91831058bb6aec33065f0166fcf4b3 --- cinder/tests/unit/api/test_versions.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/cinder/tests/unit/api/test_versions.py b/cinder/tests/unit/api/test_versions.py index c9f95565e00..9c9586905ed 100644 --- a/cinder/tests/unit/api/test_versions.py +++ b/cinder/tests/unit/api/test_versions.py @@ -13,6 +13,7 @@ # License for the specific language governing permissions and limitations # under the License. from http import HTTPStatus +import re import ddt from oslo_config import cfg @@ -20,6 +21,7 @@ from oslo_serialization import jsonutils from oslo_utils import encodeutils import webob +from cinder.api import microversions from cinder.api.openstack import api_version_request from cinder.api.openstack import wsgi from cinder.api.v3 import router @@ -439,3 +441,18 @@ class VersionsControllerTestCase(test.TestCase): resp = encodeutils.safe_decode(response.body, incoming='utf-8') self.assertEqual("Pass", resp) self.assertEqual(HTTPStatus.OK, response.status_int) + + +class MicroversionsTest(test.TestCase): + def test_latest_microversions_present(self): + # This test ensures that a developer adds a microversions.py + # entry for a new api_version_request._MAX_API_VERSION microversion. + + a = vars(microversions) + versions_present = list(v for v in a if re.match(r'[A-Z]+[A-Z_]*', v)) + + max_mv = api_version_request._MAX_API_VERSION + count = len(list(v for v in versions_present if + getattr(microversions, v) == max_mv)) + self.assertEqual( + 1, count, max_mv + ' should be present once in microversions.py')