Complete guided release console workflow
This commit is contained in:
@@ -0,0 +1,105 @@
|
||||
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()
|
||||
Reference in New Issue
Block a user