Compare commits
2 Commits
c7aac676a1
...
98578c5d06
| Author | SHA1 | Date | |
|---|---|---|---|
| 98578c5d06 | |||
|
|
715f771d26 |
52
src/version_manager.py
Normal file
52
src/version_manager.py
Normal file
@ -0,0 +1,52 @@
|
||||
class VersionManager:
|
||||
def __init__(self, version=""):
|
||||
self.major_ = 0
|
||||
self.minor_ = 0
|
||||
self.patch_ = 0
|
||||
|
||||
if not version:
|
||||
self.patch_ = 1
|
||||
else:
|
||||
parts = version.split(".")
|
||||
try:
|
||||
if len(parts) >= 1 and parts[0]:
|
||||
self.major_ = int(parts[0])
|
||||
if len(parts) >= 2:
|
||||
self.minor_ = int(parts[1])
|
||||
if len(parts) >= 3:
|
||||
self.patch_ = int(parts[2])
|
||||
except ValueError:
|
||||
raise ValueError("Error occured while parsing version!")
|
||||
|
||||
self.version_history = [(self.major_, self.minor_, self.patch_)]
|
||||
|
||||
def _save_history(self):
|
||||
self.version_history.append((self.major_, self.minor_, self.patch_))
|
||||
|
||||
def major(self):
|
||||
self._save_history()
|
||||
self.major_ += 1
|
||||
self.minor_ = 0
|
||||
self.patch_ = 0
|
||||
return self
|
||||
|
||||
def minor(self):
|
||||
self._save_history()
|
||||
self.minor_ += 1
|
||||
self.patch_ = 0
|
||||
return self
|
||||
|
||||
def patch(self):
|
||||
self._save_history()
|
||||
self.patch_ += 1
|
||||
return self
|
||||
|
||||
def rollback(self):
|
||||
if len(self.version_history) <= 1:
|
||||
raise ValueError("Cannot rollback!")
|
||||
|
||||
self.major_, self.minor_, self.patch_ = self.version_history.pop()
|
||||
return self
|
||||
|
||||
def release(self):
|
||||
return f"{self.major_}.{self.minor_}.{self.patch_}"
|
||||
30
tests/test_version_manager.py
Normal file
30
tests/test_version_manager.py
Normal file
@ -0,0 +1,30 @@
|
||||
from src.version_manager import VersionManager
|
||||
|
||||
|
||||
def run_tests():
|
||||
# Test it_1: Initialization
|
||||
assert VersionManager().release() == "0.0.1"
|
||||
assert VersionManager("1.2.3").release() == "1.2.3"
|
||||
assert VersionManager("1").release() == "1.0.0"
|
||||
|
||||
# Test it_5: Rollbacks
|
||||
vm = VersionManager().major().rollback()
|
||||
assert vm.release() == "0.0.1"
|
||||
|
||||
# Test it_7: Exception Handling
|
||||
try:
|
||||
VersionManager("a")
|
||||
except Exception as e:
|
||||
assert str(e) == "Error occured while parsing version!"
|
||||
|
||||
# Test it_8: Rollback failure
|
||||
vm2 = VersionManager()
|
||||
try:
|
||||
vm2.rollback()
|
||||
except Exception as e:
|
||||
assert str(e) == "Cannot rollback!"
|
||||
|
||||
print("All tests passed!")
|
||||
|
||||
|
||||
run_tests()
|
||||
Loading…
x
Reference in New Issue
Block a user