Skip to content

Commit 7f15856

Browse files
Preserve prerelease suffixes when normalizing GitHub tags
Signed-off-by: Ali Zulfiqar <codewithfourtix@gmail.com>
1 parent 27c4fc9 commit 7f15856

2 files changed

Lines changed: 24 additions & 2 deletions

File tree

src/fetchcode/package_util.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,10 +119,10 @@ def _get_github_packages(purl, version_regex, ignored_tag_regex, default_package
119119
else:
120120
version = tag
121121

122-
version = version.strip("Vv").strip()
122+
version = version.strip().lstrip("Vv")
123123
if "+" in version:
124124
first, last = version.split("+")
125-
first.replace("_", ".")
125+
first = first.replace("_", ".")
126126
version = f"{first}+{last}"
127127
else:
128128
version = version.replace("_", ".")

tests/test_github_tag_versions.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import datetime
2+
3+
import pytest
4+
from packageurl import PackageURL
5+
6+
from fetchcode import package_util
7+
from fetchcode.packagedcode_models import Package
8+
9+
10+
@pytest.mark.parametrize(
11+
"tag,expected", [("v1.2-dev", "1.2-dev"), ("v1_2_3+build_4", "1.2.3+build_4")]
12+
)
13+
def test_github_tag_version_normalization(monkeypatch, tag, expected):
14+
monkeypatch.setattr(
15+
package_util.utils,
16+
"fetch_github_tags_gql",
17+
lambda purl: [(tag, datetime.datetime(2026, 1, 1))],
18+
)
19+
purl = PackageURL("github", "example", "project")
20+
packages = list(package_util.get_github_packages(purl, None, None, Package(**purl.to_dict())))
21+
assert packages[0].version == expected
22+
assert packages[0].download_url.endswith(f"/{tag}.tar.gz")

0 commit comments

Comments
 (0)