mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-12-18 04:12:19 +00:00
Support *-new
tags in version_helper.py
This commit is contained in:
parent
aa2a08c157
commit
da2c3b7332
@ -2,8 +2,12 @@
|
||||
|
||||
import unittest
|
||||
from argparse import ArgumentTypeError
|
||||
from dataclasses import dataclass
|
||||
|
||||
import version_helper as vh
|
||||
from git_helper import Git
|
||||
|
||||
CHV = vh.ClickHouseVersion
|
||||
|
||||
|
||||
class TestFunctions(unittest.TestCase):
|
||||
@ -32,3 +36,55 @@ class TestFunctions(unittest.TestCase):
|
||||
for error_case in error_cases:
|
||||
with self.assertRaises(ArgumentTypeError):
|
||||
version = vh.version_arg(error_case[0])
|
||||
|
||||
def test_get_version_from_repo(self):
|
||||
@dataclass
|
||||
class TestCase:
|
||||
latest_tag: str
|
||||
commits_since_latest: int
|
||||
new_tag: str
|
||||
commits_since_new: int
|
||||
expected: CHV
|
||||
|
||||
cases = (
|
||||
TestCase(
|
||||
"v24.6.1.1-new",
|
||||
15,
|
||||
"v24.4.1.2088-stable",
|
||||
415,
|
||||
CHV(24, 5, 1, 54487, None, 415),
|
||||
),
|
||||
TestCase(
|
||||
"v24.6.1.1-testing",
|
||||
15,
|
||||
"v24.4.1.2088-stable",
|
||||
415,
|
||||
CHV(24, 5, 1, 54487, None, 16),
|
||||
),
|
||||
TestCase(
|
||||
"v24.6.1.1-stable",
|
||||
15,
|
||||
"v24.4.1.2088-stable",
|
||||
415,
|
||||
CHV(24, 5, 1, 54487, None, 15),
|
||||
),
|
||||
TestCase(
|
||||
"v24.5.1.1-stable",
|
||||
15,
|
||||
"v24.4.1.2088-stable",
|
||||
415,
|
||||
CHV(24, 5, 1, 54487, None, 15),
|
||||
),
|
||||
)
|
||||
git = Git(True)
|
||||
for tc in cases:
|
||||
git.latest_tag = tc.latest_tag
|
||||
git.commits_since_latest = tc.commits_since_latest
|
||||
git.new_tag = tc.new_tag
|
||||
git.commits_since_new = tc.commits_since_new
|
||||
self.assertEqual(
|
||||
vh.get_version_from_repo(
|
||||
"tests/ci/tests/autogenerated_versions.txt", git
|
||||
),
|
||||
tc.expected,
|
||||
)
|
||||
|
12
tests/ci/tests/autogenerated_versions.txt
Normal file
12
tests/ci/tests/autogenerated_versions.txt
Normal file
@ -0,0 +1,12 @@
|
||||
# This variables autochanged by tests/ci/version_helper.py:
|
||||
|
||||
# NOTE: has nothing common with DBMS_TCP_PROTOCOL_VERSION,
|
||||
# only DBMS_TCP_PROTOCOL_VERSION should be incremented on protocol changes.
|
||||
SET(VERSION_REVISION 54487)
|
||||
SET(VERSION_MAJOR 24)
|
||||
SET(VERSION_MINOR 5)
|
||||
SET(VERSION_PATCH 1)
|
||||
SET(VERSION_GITHASH 70a1d3a63d47f0be077d67b8deb907230fc7cfb0)
|
||||
SET(VERSION_DESCRIBE v24.5.1.1-testing)
|
||||
SET(VERSION_STRING 24.5.1.1)
|
||||
# end of autochange
|
@ -114,6 +114,10 @@ class ClickHouseVersion:
|
||||
def tweak(self) -> int:
|
||||
return self._tweak
|
||||
|
||||
@tweak.setter
|
||||
def tweak(self, tweak: int) -> None:
|
||||
self._tweak = tweak
|
||||
|
||||
@property
|
||||
def revision(self) -> int:
|
||||
return self._revision
|
||||
@ -190,7 +194,9 @@ class ClickHouseVersion:
|
||||
and self.tweak == other.tweak
|
||||
)
|
||||
|
||||
def __lt__(self, other: "ClickHouseVersion") -> bool:
|
||||
def __lt__(self, other: Any) -> bool:
|
||||
if not isinstance(self, type(other)):
|
||||
return NotImplemented
|
||||
for part in ("major", "minor", "patch", "tweak"):
|
||||
if getattr(self, part) < getattr(other, part):
|
||||
return True
|
||||
@ -220,10 +226,11 @@ ClickHouseVersions = List[ClickHouseVersion]
|
||||
|
||||
class VersionType:
|
||||
LTS = "lts"
|
||||
NEW = "new"
|
||||
PRESTABLE = "prestable"
|
||||
STABLE = "stable"
|
||||
TESTING = "testing"
|
||||
VALID = (TESTING, PRESTABLE, STABLE, LTS)
|
||||
VALID = (NEW, TESTING, PRESTABLE, STABLE, LTS)
|
||||
|
||||
|
||||
def validate_version(version: str) -> None:
|
||||
@ -263,14 +270,29 @@ def get_version_from_repo(
|
||||
versions_path: str = FILE_WITH_VERSION_PATH,
|
||||
git: Optional[Git] = None,
|
||||
) -> ClickHouseVersion:
|
||||
"""Get a ClickHouseVersion from FILE_WITH_VERSION_PATH. When the `git` parameter is
|
||||
present, a proper `tweak` version part is calculated for case if the latest tag has
|
||||
a `new` type and greater than version in `FILE_WITH_VERSION_PATH`"""
|
||||
versions = read_versions(versions_path)
|
||||
return ClickHouseVersion(
|
||||
cmake_version = ClickHouseVersion(
|
||||
versions["major"],
|
||||
versions["minor"],
|
||||
versions["patch"],
|
||||
versions["revision"],
|
||||
git,
|
||||
)
|
||||
# Since 24.5 we have tags like v24.6.1.1-new, and we must check if the release
|
||||
# branch already has it's own commit. It's necessary for a proper tweak version
|
||||
if git is not None and git.latest_tag:
|
||||
version_from_tag = get_version_from_tag(git.latest_tag)
|
||||
if (
|
||||
version_from_tag.description == VersionType.NEW
|
||||
and cmake_version < version_from_tag
|
||||
):
|
||||
# We are in a new release branch without existing release.
|
||||
# We should change the tweak version to a `tweak_to_new`
|
||||
cmake_version.tweak = git.tweak_to_new
|
||||
return cmake_version
|
||||
|
||||
|
||||
def get_version_from_string(
|
||||
|
Loading…
Reference in New Issue
Block a user