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 .image import Image
|
||||
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