diff --git a/src/scribae/__init__.py b/src/scribae/__init__.py index 47b45e2..88cfed7 100644 --- a/src/scribae/__init__.py +++ b/src/scribae/__init__.py @@ -61,6 +61,11 @@ def _resolve_version() -> str: resolved = _version_from_pyproject() git_suffix = _git_description() if git_suffix: + tag_prefix = f"v{resolved}" + if git_suffix.startswith(f"{tag_prefix}-"): + git_suffix = git_suffix[len(tag_prefix) + 1 :] + elif git_suffix == tag_prefix: + return resolved return f"{resolved}-{git_suffix}" return resolved diff --git a/tests/unit/version_test.py b/tests/unit/version_test.py new file mode 100644 index 0000000..bb9a35a --- /dev/null +++ b/tests/unit/version_test.py @@ -0,0 +1,14 @@ +from _pytest.monkeypatch import MonkeyPatch + +import scribae as scribae_init + + +def test_resolve_version_strips_duplicate_git_tag(monkeypatch: MonkeyPatch) -> None: + monkeypatch.setattr(scribae_init, "version", lambda _: "0.1.0") + monkeypatch.setattr( + scribae_init, + "_git_description", + lambda: "v0.1.0-13-gcfeefb2-dirty", + ) + + assert scribae_init._resolve_version() == "0.1.0-13-gcfeefb2-dirty"