**fix(release): force-fetch remote tags and align tests**
* Treat remote tags as the source of truth by force-fetching tags from *origin* * Update preview output to reflect the real fetch behavior * Align unit tests with the new forced tag fetch command https://chatgpt.com/share/693bdfc3-b8b4-800f-8adc-b1dc63c56a89
This commit is contained in:
@@ -42,15 +42,14 @@ def ensure_clean_and_synced(preview: bool = False) -> None:
|
|||||||
return
|
return
|
||||||
|
|
||||||
if preview:
|
if preview:
|
||||||
print("[PREVIEW] Would run: git fetch --prune --tags")
|
print("[PREVIEW] Would run: git fetch origin --prune --tags --force")
|
||||||
print("[PREVIEW] Would run: git pull --ff-only")
|
print("[PREVIEW] Would run: git pull --ff-only")
|
||||||
return
|
return
|
||||||
|
|
||||||
print("[INFO] Syncing with remote before making any changes...")
|
print("[INFO] Syncing with remote before making any changes...")
|
||||||
run_git_command("git fetch --prune --tags")
|
run_git_command("git fetch origin --prune --tags --force")
|
||||||
run_git_command("git pull --ff-only")
|
run_git_command("git pull --ff-only")
|
||||||
|
|
||||||
|
|
||||||
def is_highest_version_tag(tag: str) -> bool:
|
def is_highest_version_tag(tag: str) -> bool:
|
||||||
"""
|
"""
|
||||||
Return True if `tag` is the highest version among all tags matching v*.
|
Return True if `tag` is the highest version among all tags matching v*.
|
||||||
|
|||||||
@@ -109,10 +109,11 @@ class TestEnsureCleanAndSynced(unittest.TestCase):
|
|||||||
ensure_clean_and_synced(preview=False)
|
ensure_clean_and_synced(preview=False)
|
||||||
|
|
||||||
called_cmds = [c.args[0] for c in mock_run.call_args_list]
|
called_cmds = [c.args[0] for c in mock_run.call_args_list]
|
||||||
self.assertIn("git fetch --prune --tags", called_cmds)
|
self.assertIn("git fetch origin --prune --tags --force", called_cmds)
|
||||||
self.assertIn("git pull --ff-only", called_cmds)
|
self.assertIn("git pull --ff-only", called_cmds)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class TestIsHighestVersionTag(unittest.TestCase):
|
class TestIsHighestVersionTag(unittest.TestCase):
|
||||||
@patch("pkgmgr.actions.release.git_ops.subprocess.run")
|
@patch("pkgmgr.actions.release.git_ops.subprocess.run")
|
||||||
def test_is_highest_version_tag_no_tags_true(self, mock_run) -> None:
|
def test_is_highest_version_tag_no_tags_true(self, mock_run) -> None:
|
||||||
|
|||||||
Reference in New Issue
Block a user