1
0
Fork 0
Code Issues Pull requests Projects Releases 2 Packages Wiki Activity Actions Pages

Verify legacy tag in fresh-clone gate

This commit is contained in:
Andraxion 2026-07-29 16:39:21 -04:00
parent d2bb95fe61
commit 97f3b6b1ae
2 changed files with 137 additions and 1 deletions

View file

@ -1,11 +1,21 @@
from __future__ import annotations
import subprocess
import tempfile
import unittest
from pathlib import Path
from tools.milestone5_fresh_clone import (
COMMIT_PATTERN,
EXPECTED_LEGACY_TAG_COMMIT,
EXPECTED_LEGACY_TAG_OBJECT,
EXPECTED_ORIGINS,
LEGACY_MIGRATION_TAG,
PUBLIC_REPOSITORY,
ROOT,
FreshCloneError,
obtain_legacy_tag,
validate_legacy_tag,
)
@ -24,6 +34,77 @@ class Milestone5FreshCloneTests(unittest.TestCase):
with self.subTest(invalid=invalid):
self.assertIsNone(COMMIT_PATTERN.fullmatch(invalid))
def test_frozen_legacy_tag_identity_is_exact(self) -> None:
self.assertEqual("v1.0.0", LEGACY_MIGRATION_TAG)
self.assertEqual(
EXPECTED_LEGACY_TAG_OBJECT,
subprocess.run(
["git", "rev-parse", LEGACY_MIGRATION_TAG],
cwd=ROOT,
check=True,
capture_output=True,
text=True,
).stdout.strip(),
)
self.assertEqual(
EXPECTED_LEGACY_TAG_COMMIT,
subprocess.run(
["git", "rev-parse", f"{LEGACY_MIGRATION_TAG}^{{commit}}"],
cwd=ROOT,
check=True,
capture_output=True,
text=True,
).stdout.strip(),
)
def test_tagless_clone_obtains_and_verifies_only_frozen_legacy_tag(self) -> None:
with tempfile.TemporaryDirectory() as directory_name:
clone = Path(directory_name) / "clone"
subprocess.run(
["git", "clone", "--no-tags", str(ROOT), str(clone)],
check=True,
capture_output=True,
text=True,
)
initial_tags = subprocess.run(
["git", "tag", "--list"],
cwd=clone,
check=True,
capture_output=True,
text=True,
).stdout.splitlines()
self.assertEqual([], initial_tags)
_, tag_object, tag_commit = obtain_legacy_tag(clone)
self.assertEqual(EXPECTED_LEGACY_TAG_OBJECT, tag_object)
self.assertEqual(EXPECTED_LEGACY_TAG_COMMIT, tag_commit)
fetched_tags = subprocess.run(
["git", "tag", "--list"],
cwd=clone,
check=True,
capture_output=True,
text=True,
).stdout.splitlines()
self.assertEqual([LEGACY_MIGRATION_TAG], fetched_tags)
def test_legacy_tag_validation_rejects_substitution(self) -> None:
valid = {
"object_type": "tag",
"tag_object": EXPECTED_LEGACY_TAG_OBJECT,
"tag_commit": EXPECTED_LEGACY_TAG_COMMIT,
}
invalid_cases = (
("lightweight tag", {"object_type": "commit"}),
("moved tag object", {"tag_object": "a" * 40}),
("moved tag commit", {"tag_commit": "b" * 40}),
)
for label, replacement in invalid_cases:
with self.subTest(label=label):
values = valid | replacement
with self.assertRaises(FreshCloneError):
validate_legacy_tag(**values)
if __name__ == "__main__":
unittest.main()