Publish v0.8.22 with size-aware Starter Chain layout, frontend version consistency, dynamic release artifact naming, regression tests, bug audit, roadmap, changelog, and release notes.
41 lines
1.7 KiB
Python
41 lines
1.7 KiB
Python
from __future__ import annotations
|
|
|
|
import re
|
|
import unittest
|
|
from pathlib import Path
|
|
|
|
ROOT = Path(__file__).resolve().parents[1]
|
|
|
|
|
|
class VersionConsistencyTests(unittest.TestCase):
|
|
def test_public_version_references_match(self):
|
|
version = (ROOT / "VERSION").read_text(encoding="utf-8").strip()
|
|
self.assertRegex(version, r"^\d+\.\d+\.\d+$")
|
|
|
|
init_text = (ROOT / "__init__.py").read_text(encoding="utf-8")
|
|
pyproject = (ROOT / "pyproject.toml").read_text(encoding="utf-8")
|
|
readme = (ROOT / "README.md").read_text(encoding="utf-8")
|
|
frontend = (ROOT / "js" / "continuity_director.js").read_text(encoding="utf-8")
|
|
release_workflow = (ROOT / ".github" / "workflows" / "release.yml").read_text(encoding="utf-8")
|
|
release_notes = ROOT / "docs" / "releases" / f"v{version}.md"
|
|
|
|
init_match = re.search(r'__version__\s*=\s*"([^"]+)"', init_text)
|
|
project_match = re.search(r'^version\s*=\s*"([^"]+)"', pyproject, re.MULTILINE)
|
|
frontend_match = re.search(r'const VER\s*=\s*"([^"]+)"', frontend)
|
|
|
|
self.assertIsNotNone(init_match)
|
|
self.assertIsNotNone(project_match)
|
|
self.assertIsNotNone(frontend_match)
|
|
self.assertEqual(init_match.group(1), version)
|
|
self.assertEqual(project_match.group(1), version)
|
|
self.assertEqual(frontend_match.group(1), version)
|
|
self.assertIn(f"version-{version}-", readme)
|
|
self.assertIn(f"continuity-director-v{version}.zip", readme)
|
|
self.assertIn("steps.version.outputs.version", release_workflow)
|
|
self.assertNotIn(f"continuity-director-v{version}.zip\n", release_workflow)
|
|
self.assertTrue(release_notes.is_file())
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|