Simon Clematide
feat: release v1.0.0 with restrained interface and versioning
1c44eff
Raw History Blame Contribute Delete
1.58 kB
"""Release metadata and version increment regressions."""
from datetime import date
from pathlib import Path
from tempfile import TemporaryDirectory
import unittest
from core.version import __version__, __release_date__
from scripts.bump_version import bump_version
class VersionTests(unittest.TestCase):
def test_application_metadata(self):
self.assertRegex(__version__, r"^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$")
date.fromisoformat(__release_date__)
def test_bumps_reset_lower_components_and_update_date(self):
for part, expected in (("patch", "1.2.4"), ("minor", "1.3.0"), ("major", "2.0.0")):
with self.subTest(part=part), TemporaryDirectory() as directory:
path = Path(directory) / "version.py"
path.write_text('__version__ = "1.2.3"\n__release_date__ = "2026-01-01"\n')
self.assertEqual(bump_version(part, version_file=path, release_date=date(2026, 11, 8)), expected)
self.assertIn(f'__version__ = "{expected}"', path.read_text())
self.assertIn('__release_date__ = "2026-11-08"', path.read_text())
def test_invalid_metadata_is_not_modified(self):
with TemporaryDirectory() as directory:
path = Path(directory) / "version.py"
original = '__version__ = "broken"\n'
path.write_text(original)
with self.assertRaises(ValueError):
bump_version(version_file=path)
self.assertEqual(path.read_text(), original)
if __name__ == "__main__":
unittest.main()