introduce version parsed from string
parent
1e9f8ff077
commit
f569d07a84
@ -1,5 +1,6 @@
|
|||||||
from .common import Validateable, DnsRecord, Devops, BuildType, MixinType
|
from .common import Validateable, DnsRecord, Devops, BuildType, MixinType, ReleaseType
|
||||||
from .devops_factory import DevopsFactory
|
from .devops_factory import DevopsFactory
|
||||||
from .image import Image
|
from .image import Image
|
||||||
from .c4k import C4k
|
from .c4k import C4k
|
||||||
from .release import Release, ReleaseType, Version, EnvironmentKeys
|
from .release import Release, EnvironmentKeys
|
||||||
|
from .version import Version
|
||||||
|
@ -0,0 +1,64 @@
|
|||||||
|
from enum import Enum
|
||||||
|
from typing import Optional
|
||||||
|
from .common import (
|
||||||
|
Validateable,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class Version(Validateable):
|
||||||
|
@classmethod
|
||||||
|
def from_str(cls, input_str: str):
|
||||||
|
snapshot_parsed = input_str.split("-")
|
||||||
|
version_str = snapshot_parsed[0]
|
||||||
|
suffix_str = None
|
||||||
|
if len(snapshot_parsed) > 1:
|
||||||
|
suffix_str = snapshot_parsed[1]
|
||||||
|
version_no_parsed = []
|
||||||
|
for x in version_str.split("."):
|
||||||
|
version_no_parsed += [int(x)]
|
||||||
|
return cls(
|
||||||
|
version_no_parsed,
|
||||||
|
suffix_str,
|
||||||
|
input_str,
|
||||||
|
)
|
||||||
|
|
||||||
|
def __init__(
|
||||||
|
self,
|
||||||
|
version_list: list,
|
||||||
|
snapshot_suffix: Optional[str] = None,
|
||||||
|
version_str: Optional[str] = None,
|
||||||
|
):
|
||||||
|
self.version_list = version_list
|
||||||
|
self.snapshot_suffix = snapshot_suffix
|
||||||
|
self.version_string = version_str
|
||||||
|
|
||||||
|
def is_snapshot(self):
|
||||||
|
return not self.snapshot_suffix == None
|
||||||
|
|
||||||
|
def to_string(self) -> str:
|
||||||
|
version_no = ".".join([str(x) for x in self.version_list])
|
||||||
|
if self.is_snapshot():
|
||||||
|
return f"{version_no}-{self.snapshot_suffix}"
|
||||||
|
return version_no
|
||||||
|
|
||||||
|
def validate(self):
|
||||||
|
result = []
|
||||||
|
result += self.__validate_is_not_empty__("version_list")
|
||||||
|
if self.version_list and len(self.version_list) < 3:
|
||||||
|
result += [f"version_list must have at least 3 levels."]
|
||||||
|
if self.version_list and self.version_string and self.to_string() != self.version_string:
|
||||||
|
result += [f"version_string not parsed correct. Input was {self.version_string} parsed was {self.to_string()}"]
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
|
# def create_release_version(self, release_type: ReleaseType | None):
|
||||||
|
# release_version = Version(self.path, self.version_list.copy())
|
||||||
|
# release_version.is_snapshot = self.is_snapshot
|
||||||
|
# release_version.increment(release_type)
|
||||||
|
# return release_version
|
||||||
|
|
||||||
|
# def create_bump_version(self):
|
||||||
|
# bump_version = Version(self.path, self.version_list.copy())
|
||||||
|
# bump_version.is_snapshot = self.is_snapshot
|
||||||
|
# bump_version.increment(ReleaseType.BUMP)
|
||||||
|
# return bump_version
|
@ -0,0 +1,79 @@
|
|||||||
|
from pybuilder.core import Project
|
||||||
|
from pathlib import Path
|
||||||
|
from src.main.python.ddadevops.domain import (
|
||||||
|
Version,
|
||||||
|
ReleaseType,
|
||||||
|
)
|
||||||
|
from src.main.python.ddadevops.domain.image import Image
|
||||||
|
from .test_helper import build_devops, devops_config
|
||||||
|
|
||||||
|
|
||||||
|
def test_version_creation():
|
||||||
|
sut = Version.from_str("1.2.3")
|
||||||
|
assert sut.to_string() == "1.2.3"
|
||||||
|
assert sut.version_list == [1, 2, 3]
|
||||||
|
assert sut.is_snapshot() == False
|
||||||
|
|
||||||
|
sut = Version.from_str("1.2.3-SNAPSHOT")
|
||||||
|
assert sut.to_string() == "1.2.3-SNAPSHOT"
|
||||||
|
assert sut.version_list == [1, 2, 3]
|
||||||
|
assert sut.is_snapshot() == True
|
||||||
|
|
||||||
|
|
||||||
|
def test_should_validate_version_list():
|
||||||
|
sut = Version(None)
|
||||||
|
assert not sut.is_valid()
|
||||||
|
|
||||||
|
sut = Version([])
|
||||||
|
assert not sut.is_valid()
|
||||||
|
|
||||||
|
sut = Version([1, 2])
|
||||||
|
assert not sut.is_valid()
|
||||||
|
|
||||||
|
sut = Version([1, 2, 3])
|
||||||
|
assert sut.is_valid()
|
||||||
|
|
||||||
|
|
||||||
|
def test_should_validate_parsing():
|
||||||
|
sut = Version.from_str("1.2")
|
||||||
|
assert not sut.is_valid()
|
||||||
|
|
||||||
|
sut = Version.from_str("1.2.3")
|
||||||
|
sut.version_list = [2, 2, 2]
|
||||||
|
assert not sut.is_valid()
|
||||||
|
|
||||||
|
sut = Version.from_str("1.2.3")
|
||||||
|
assert sut.is_valid()
|
||||||
|
|
||||||
|
sut = Version.from_str("1.2.3-SNAPSHOT")
|
||||||
|
assert sut.is_valid()
|
||||||
|
|
||||||
|
sut = Version.from_str("1.2.3-dev")
|
||||||
|
assert sut.is_valid()
|
||||||
|
|
||||||
|
|
||||||
|
def test_version():
|
||||||
|
pass
|
||||||
|
# version = Version.version_from_str("1.2.3-SNAPSHOT")
|
||||||
|
# version.increment(ReleaseType.NONE)
|
||||||
|
# assert version.get_version_string() == "1.2.3-SNAPSHOT"
|
||||||
|
# assert version.version_list == [1, 2, 3]
|
||||||
|
# assert version.is_snapshot
|
||||||
|
|
||||||
|
# version = Version.version_from_str("1.2.3")
|
||||||
|
# version.increment(ReleaseType.PATCH)
|
||||||
|
# assert version.get_version_string() == "1.2.4"
|
||||||
|
# assert version.version_list == [1, 2, 4]
|
||||||
|
# assert not version.is_snapshot
|
||||||
|
|
||||||
|
# version = Version.version_from_str("1.2.3")
|
||||||
|
# version.increment(ReleaseType.MINOR)
|
||||||
|
# assert version.get_version_string() == "1.3.0"
|
||||||
|
# assert version.version_list == [1, 3, 0]
|
||||||
|
# assert not version.is_snapshot
|
||||||
|
|
||||||
|
# version = Version.version_from_str("1.2.3")
|
||||||
|
# version.increment(ReleaseType.MAJOR)
|
||||||
|
# assert version.get_version_string() == "2.0.0"
|
||||||
|
# assert version.version_list == [2, 0, 0]
|
||||||
|
# assert not version.is_snapshot
|
Loading…
Reference in New Issue