Files
govoplan/tests/test_release_version_metadata.py
T
zemion f1fd143ef5
Dependency Audit / dependency-audit (push) Successful in 2m35s
Deployment Installer / deployment-installer (push) Successful in 6s
Security Audit / security-audit (push) Failing after 15s
Complete guided release console workflow
2026-07-31 05:46:50 +02:00

106 lines
3.5 KiB
Python

from __future__ import annotations
import json
from pathlib import Path
import sys
import tempfile
import unittest
META_ROOT = Path(__file__).resolve().parents[1]
RELEASE_ROOT = META_ROOT / "tools" / "release"
if str(RELEASE_ROOT) not in sys.path:
sys.path.insert(0, str(RELEASE_ROOT))
from govoplan_release.version_metadata import ( # noqa: E402
apply_version_metadata_mutations,
version_metadata_mutations,
)
class ReleaseVersionMetadataTests(unittest.TestCase):
def test_updates_recognized_metadata_without_changing_interface_versions(
self,
) -> None:
with tempfile.TemporaryDirectory() as temp_dir:
root = Path(temp_dir)
package = root / "src" / "govoplan_example"
backend = package / "backend"
webui = root / "webui"
backend.mkdir(parents=True)
webui.mkdir()
(root / "pyproject.toml").write_text(
'[project]\nname = "govoplan-example"\nversion = "1.2.3"\n',
encoding="utf-8",
)
(root / "package.json").write_text(
'{"name":"root","version":"1.2.3"}\n',
encoding="utf-8",
)
(webui / "package.json").write_text(
'{"name":"@govoplan/example-webui","version":"1.2.3"}\n',
encoding="utf-8",
)
(webui / "package-lock.json").write_text(
json.dumps(
{
"name": "@govoplan/example-webui",
"version": "1.2.3",
"packages": {
"": {
"name": "@govoplan/example-webui",
"version": "1.2.3",
}
},
}
)
+ "\n",
encoding="utf-8",
)
(backend / "manifest.py").write_text(
"def get_manifest():\n"
" return ModuleManifest(\n"
' id="example",\n'
' version="1.2.3",\n'
" provides_interfaces=(\n"
' ModuleInterfaceProvider(name="example.api", version="4.0"),\n'
" ),\n"
" )\n",
encoding="utf-8",
)
(package / "__init__.py").write_text(
'__version__ = "1.2.3"\n',
encoding="utf-8",
)
preview = version_metadata_mutations(
root,
target_version="1.2.4",
)
changed = apply_version_metadata_mutations(
root,
target_version="1.2.4",
)
self.assertEqual(
{mutation.path for mutation in preview},
set(changed),
)
self.assertEqual(
"1.2.4",
json.loads((webui / "package-lock.json").read_text())[
"packages"
][""]["version"],
)
manifest = (backend / "manifest.py").read_text(encoding="utf-8")
self.assertIn('version="1.2.4"', manifest)
self.assertIn('version="4.0"', manifest)
self.assertEqual(
'__version__ = "1.2.4"\n',
(package / "__init__.py").read_text(encoding="utf-8"),
)
if __name__ == "__main__":
unittest.main()