Skip to content
Snippets Groups Projects
Commit c4370009 authored by Antoine Lambert's avatar Antoine Lambert
Browse files

golang: Ensure to include dev version when no releases exist

Some go packages only have a development version not listed by the
@v/list endpoint but returned by the @latest endpoint.

So ensure to return it in get_versions method or it will be missed
by the loader.

Related to T4124
parent 0c599bdc
No related branches found
No related tags found
1 merge request!449golang: Ensure to include dev version when no releases exist
......@@ -11,7 +11,7 @@ from typing import Iterator, Optional, Sequence, Tuple
import attr
from swh.loader.package.loader import BasePackageInfo, PackageLoader
from swh.loader.package.utils import EMPTY_AUTHOR, api_info, release_name
from swh.loader.package.utils import EMPTY_AUTHOR, api_info, cached_method, release_name
from swh.model.model import ObjectType, Release, Sha1Git, TimestampWithTimezone
from swh.storage.interface import StorageInterface
......@@ -54,8 +54,15 @@ class GolangLoader(PackageLoader[GolangPackageInfo]):
self.url = _uppercase_encode(self.url)
def get_versions(self) -> Sequence[str]:
return api_info(f"{self.url}/@v/list").decode().splitlines()
versions = api_info(f"{self.url}/@v/list").decode().splitlines()
# some go packages only have a development version not listed by the endpoint above,
# so ensure to return it or it will be missed by the golang loader
default_version = self.get_default_version()
if default_version not in versions:
versions.append(default_version)
return versions
@cached_method
def get_default_version(self) -> str:
latest = api_info(f"{self.url}/@latest")
return json.loads(latest)["Version"]
......
{"Version":"v0.0.0-20131225113241-85981e2038bf","Time":"2013-12-25T11:32:41Z"}
\ No newline at end of file
{"Version":"v0.0.0-20131225113241-85981e2038bf","Time":"2013-12-25T11:32:41Z"}
\ No newline at end of file
......@@ -20,3 +20,12 @@ def test_golang_loader_package_name_with_uppercase_characters(
loader = GolangLoader(swh_storage, url)
assert loader.load()["status"] == "eventful"
def test_golang_loader_package_with_dev_version_only(
swh_storage, requests_mock_datadir
):
url = "https://pkg.go.dev/github.com/xgdapg/daemon"
loader = GolangLoader(swh_storage, url)
assert loader.load()["status"] == "eventful"
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment