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()