fix(release): prepare aligned 0.1.45 composition and guarded candidate sequencing
This commit is contained in:
@@ -13,12 +13,47 @@ if str(RELEASE_ROOT) not in sys.path:
|
||||
sys.path.insert(0, str(RELEASE_ROOT))
|
||||
|
||||
from govoplan_release.version_metadata import ( # noqa: E402
|
||||
VersionMetadataError,
|
||||
apply_version_metadata_mutations,
|
||||
version_metadata_mutations,
|
||||
)
|
||||
|
||||
|
||||
class ReleaseVersionMetadataTests(unittest.TestCase):
|
||||
def test_updates_shared_module_version_without_rewriting_independent_interfaces(self) -> None:
|
||||
with tempfile.TemporaryDirectory() as temp_dir:
|
||||
root = Path(temp_dir)
|
||||
backend = root / "src" / "govoplan_example" / "backend"
|
||||
backend.mkdir(parents=True)
|
||||
manifest = backend / "manifest.py"
|
||||
manifest.write_text(
|
||||
'MODULE_VERSION: str = "1.2.3"\n'
|
||||
'manifest = ModuleManifest(id="example", version=MODULE_VERSION,\n'
|
||||
' provides_interfaces=(ModuleInterfaceProvider(name="api", version="2.0"),))\n',
|
||||
encoding="utf-8",
|
||||
)
|
||||
changed = apply_version_metadata_mutations(root, target_version="1.2.4")
|
||||
self.assertEqual(("src/govoplan_example/backend/manifest.py",), changed)
|
||||
self.assertIn('MODULE_VERSION: str = "1.2.4"', manifest.read_text())
|
||||
self.assertIn('version="2.0"', manifest.read_text())
|
||||
self.assertEqual((), version_metadata_mutations(root, target_version="1.2.4"))
|
||||
|
||||
def test_dynamic_module_version_fails_before_any_metadata_is_written(self) -> None:
|
||||
with tempfile.TemporaryDirectory() as temp_dir:
|
||||
root = Path(temp_dir)
|
||||
backend = root / "src" / "govoplan_example" / "backend"
|
||||
backend.mkdir(parents=True)
|
||||
project = root / "pyproject.toml"
|
||||
project.write_text('[project]\nname="govoplan-example"\nversion="1.2.3"\n')
|
||||
before = project.read_bytes()
|
||||
(backend / "manifest.py").write_text(
|
||||
'MODULE_VERSION = compute_version()\n'
|
||||
'manifest = ModuleManifest(id="example", version=MODULE_VERSION)\n',
|
||||
)
|
||||
with self.assertRaisesRegex(VersionMetadataError, "no literal MODULE_VERSION"):
|
||||
apply_version_metadata_mutations(root, target_version="1.2.4")
|
||||
self.assertEqual(before, project.read_bytes())
|
||||
|
||||
def test_updates_recognized_metadata_without_changing_interface_versions(
|
||||
self,
|
||||
) -> None:
|
||||
|
||||
Reference in New Issue
Block a user