feat: version manager kata done. test: testcase for version manager kata started

This commit is contained in:
Sandro Zimmermann 2026-03-06 10:22:31 +01:00
parent ec105d44be
commit 8f3cd117ef
2 changed files with 45 additions and 22 deletions

View File

@ -1,31 +1,47 @@
class VersionManager:
def __init__(self, version="0.0.1"):
version = version.split(".")[:3]
try:
for val in version:
assert val.isdecimal(), "Error occured while parsing version!"
except AssertionError as error:
print(error)
def __init__(self, version=None):
if not version:
version = "0.0.1"
self.version = ".".join(version)
self.history = [self.version]
parts = version.split(".")[:3]
def major(self) -> None:
pass
if not all(p.isdecimal() for p in parts):
raise ValueError("Error occured while parsing version!")
def minor(self) -> None:
pass
nums = [int(p) for p in parts]
def path(self) -> None:
pass
while len(nums) < 3:
nums.append(0)
def rollback(self) -> None:
pass
self.major_v, self.minor_v, self.patch_v = nums
self.history = []
def release(self) -> str:
return f"{self.version}"
def _save(self):
self.history.append((self.major_v, self.minor_v, self.patch_v))
def major(self):
self._save()
self.major_v += 1
self.minor_v = 0
self.patch_v = 0
return self
test = VersionManager("1.1")
print(test.version)
print(test.history)
def minor(self):
self._save()
self.minor_v += 1
self.patch_v = 0
return self
def patch(self):
self._save()
self.patch_v += 1
return self
def rollback(self):
if not self.history:
raise Exception("Cannot rollback!")
self.major_v, self.minor_v, self.patch_v = self.history.pop()
return self
def release(self):
return f"{self.major_v}.{self.minor_v}.{self.patch_v}"

View File

@ -0,0 +1,7 @@
from src.codewars.kata_version_mamanger import VersionManager
def test_lamp():
v = VersionManager("1.1.1")
assert v.release() == "1.1.1"