106 lines
3.5 KiB
Python
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()
|