add some tests

This commit is contained in:
Michael Jerger 2023-07-13 20:41:52 +02:00
parent eb5be21824
commit 6b1ffb6e99
3 changed files with 35 additions and 0 deletions

View file

@ -12,6 +12,7 @@ classDiagram
} }
class Image { class Image {
image_naming
image_dockerhub_user image_dockerhub_user
image_dockerhub_password image_dockerhub_password
image_publish_tag image_publish_tag

View file

@ -1,3 +1,4 @@
from enum import Enum
from typing import List, Dict from typing import List, Dict
from .common import ( from .common import (
filter_none, filter_none,
@ -5,15 +6,23 @@ from .common import (
) )
class NamingType(Enum):
NAME_ONLY = 1
NAME_AND_MODULE = 2
class Image(Validateable): class Image(Validateable):
def __init__( def __init__(
self, self,
inp: dict, inp: dict,
): ):
self.module = inp.get("module")
self.name = inp.get("name")
self.image_dockerhub_user = inp.get("image_dockerhub_user") self.image_dockerhub_user = inp.get("image_dockerhub_user")
self.image_dockerhub_password = inp.get("image_dockerhub_password") self.image_dockerhub_password = inp.get("image_dockerhub_password")
self.image_tag = inp.get("image_tag") self.image_tag = inp.get("image_tag")
self.image_build_commons_path = inp.get("image_build_commons_path") self.image_build_commons_path = inp.get("image_build_commons_path")
self.image_naming = NamingType[inp.get("image_naming", "NAME_ONLY")]
self.image_use_package_common_files = inp.get( self.image_use_package_common_files = inp.get(
"image_use_package_common_files", True "image_use_package_common_files", True
) )
@ -23,8 +32,10 @@ class Image(Validateable):
def validate(self) -> List[str]: def validate(self) -> List[str]:
result = [] result = []
result += self.__validate_is_not_empty__("name")
result += self.__validate_is_not_empty__("image_dockerhub_user") result += self.__validate_is_not_empty__("image_dockerhub_user")
result += self.__validate_is_not_empty__("image_dockerhub_password") result += self.__validate_is_not_empty__("image_dockerhub_password")
result += self.__validate_is_not_empty__("image_naming")
if not self.image_use_package_common_files: if not self.image_use_package_common_files:
result += self.__validate_is_not_empty__("image_build_commons_path") result += self.__validate_is_not_empty__("image_build_commons_path")
result += self.__validate_is_not_empty__("image_build_commons_dir_name") result += self.__validate_is_not_empty__("image_build_commons_dir_name")
@ -37,6 +48,16 @@ class Image(Validateable):
] ]
return "/".join(filter_none(commons_path)) + "/" return "/".join(filter_none(commons_path)) + "/"
def image_name(self) -> str:
result: List[str] = [self.name] # type: ignore
if (
self.image_naming == NamingType.NAME_AND_MODULE
and self.module
and self.module != ""
):
result.append(self.module)
return "-".join(result)
@classmethod @classmethod
def get_mapping_default(cls) -> List[Dict[str, str]]: def get_mapping_default(cls) -> List[Dict[str, str]]:
return [ return [

View file

@ -12,3 +12,16 @@ def test_devops_build_commons_path():
assert image is not None assert image is not None
assert image.is_valid() assert image.is_valid()
assert "docker/" == image.build_commons_path() assert "docker/" == image.build_commons_path()
def test_should_calculate_image_name():
sut = build_devops({})
image = sut.specialized_builds[BuildType.IMAGE]
assert "name" == image.image_name()
sut = build_devops({'image_naming': "NAME_ONLY"})
image = sut.specialized_builds[BuildType.IMAGE]
assert "name" == image.image_name()
sut = build_devops({'image_naming': "NAME_AND_MODULE"})
image = sut.specialized_builds[BuildType.IMAGE]
assert "name-module" == image.image_name()