File size: 1,579 Bytes
1c44eff | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | """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()
|