From de480565ccb2c4f5a5fb9d6681d79ec80596fd84 Mon Sep 17 00:00:00 2001 From: Richard Tibbles Date: Tue, 13 Feb 2024 22:19:12 -0800 Subject: [PATCH] Fix version parsing for release candidates. --- kolibri/utils/tests/test_version.py | 22 ++++++++++++++++++++++ kolibri/utils/version.py | 2 +- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/kolibri/utils/tests/test_version.py b/kolibri/utils/tests/test_version.py index e5815923ee5..0c63db2d387 100755 --- a/kolibri/utils/tests/test_version.py +++ b/kolibri/utils/tests/test_version.py @@ -108,6 +108,18 @@ def test_version_file_local_git_version(self, describe_mock, file_mock): v = get_version((0, 7, 1)) self.assertIn("0.7.1b1.dev0+git.2.gfd48a7a", v) + @mock.patch( + "kolibri.utils.version.get_version_file", + return_value="0.7.1rc1.dev0+git.2.gfd48a7a", + ) + @mock.patch("kolibri.utils.version.get_git_describe", return_value=None) + def test_version_file_local_git_version_rc(self, describe_mock, file_mock): + """ + Test that a version file with git describe output is correctly parsed + """ + v = get_version((0, 7, 1)) + self.assertIn("0.7.1rc1.dev0+git.2.gfd48a7a", v) + @mock.patch("kolibri.utils.version.get_version_file", return_value="0.1.0a1\n") @mock.patch("kolibri.utils.version.get_git_describe", return_value=None) @mock.patch("kolibri.utils.version.get_git_changeset", return_value=None) @@ -174,6 +186,16 @@ def test_version_file_overrides( """ assert get_version((0, 1, 0)) == "0.1.0b1" + @mock.patch("kolibri.utils.version.get_version_file", return_value="0.1.0rc1") + @mock.patch("kolibri.utils.version.get_git_describe", return_value=None) + @mock.patch("kolibri.utils.version.get_git_changeset", return_value=None) + def test_version_file_rc(self, get_git_changeset_mock, describe_mock, file_mock): + """ + Test that a VERSION specifying a final version will work when the + kolibri.VERSION tuple is consistent. + """ + assert get_version((0, 1, 0)) == "0.1.0rc1" + @mock.patch("kolibri.utils.version.get_version_file", return_value="0.1.0") @mock.patch("kolibri.utils.version.get_git_describe", return_value=None) @mock.patch("kolibri.utils.version.get_git_changeset", return_value=None) diff --git a/kolibri/utils/version.py b/kolibri/utils/version.py index 716f8f66eb6..9aef3e1304d 100644 --- a/kolibri/utils/version.py +++ b/kolibri/utils/version.py @@ -406,7 +406,7 @@ def normalize_version_to_semver(version): after = (after or "").strip("-").strip("+").strip(".").split("+")[0] # split up the alpha/beta letters from the numbers, to sort numerically not alphabetically - after_pieces = re.match(r"([a-z])(\d+)", after) + after_pieces = re.match(r"([a-z]{1,2})(\d+)", after) if after_pieces: after = ".".join([piece for piece in after_pieces.group() if piece])