From 2ff32da5fcff6fbfe7bd3d1ebf254f469257b35a Mon Sep 17 00:00:00 2001 From: Antoine Lambert <anlambert@softwareheritage.org> Date: Mon, 27 May 2024 14:43:15 +0200 Subject: [PATCH] golang: Ensure package version is uppercase encoded in download URL While the package version was properly uppercase encoded in the URL for fetching package version info, it was not in the download URL resulting in 404 and partial visit of the golang origin. --- swh/loader/package/golang/loader.py | 2 +- .../github.com_adam-hanna_array!operations_@v_list | 1 + ...ub.com_adam-hanna_array!operations_@v_v1.0.1-!r!c1.info | 1 + ...hub.com_adam-hanna_array!operations_@v_v1.0.1-!r!c1.zip | 1 + swh/loader/package/golang/tests/test_golang.py | 7 ++++++- 5 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 swh/loader/package/golang/tests/data/https_proxy.golang.org/github.com_adam-hanna_array!operations_@v_v1.0.1-!r!c1.info create mode 120000 swh/loader/package/golang/tests/data/https_proxy.golang.org/github.com_adam-hanna_array!operations_@v_v1.0.1-!r!c1.zip diff --git a/swh/loader/package/golang/loader.py b/swh/loader/package/golang/loader.py index bbcd37a3..c1890da1 100644 --- a/swh/loader/package/golang/loader.py +++ b/swh/loader/package/golang/loader.py @@ -82,7 +82,7 @@ class GolangLoader(PackageLoader[GolangPackageInfo]): filename = f"{encoded_name}-{version}.zip" timestamp = TimestampWithTimezone.from_iso8601(self._raw_info(version)["Time"]) p_info = GolangPackageInfo( - url=f"{self.url}/@v/{version}.zip", + url=f"{self.url}/@v/{_uppercase_encode(version)}.zip", filename=filename, version=version, timestamp=timestamp, diff --git a/swh/loader/package/golang/tests/data/https_proxy.golang.org/github.com_adam-hanna_array!operations_@v_list b/swh/loader/package/golang/tests/data/https_proxy.golang.org/github.com_adam-hanna_array!operations_@v_list index b18d4654..298de5bf 100644 --- a/swh/loader/package/golang/tests/data/https_proxy.golang.org/github.com_adam-hanna_array!operations_@v_list +++ b/swh/loader/package/golang/tests/data/https_proxy.golang.org/github.com_adam-hanna_array!operations_@v_list @@ -1 +1,2 @@ v1.0.1 +v1.0.1-RC1 diff --git a/swh/loader/package/golang/tests/data/https_proxy.golang.org/github.com_adam-hanna_array!operations_@v_v1.0.1-!r!c1.info b/swh/loader/package/golang/tests/data/https_proxy.golang.org/github.com_adam-hanna_array!operations_@v_v1.0.1-!r!c1.info new file mode 100644 index 00000000..369f7943 --- /dev/null +++ b/swh/loader/package/golang/tests/data/https_proxy.golang.org/github.com_adam-hanna_array!operations_@v_v1.0.1-!r!c1.info @@ -0,0 +1 @@ +{"Version":"v1.0.1-RC1","Time":"2022-02-23T18:02:43Z"} \ No newline at end of file diff --git a/swh/loader/package/golang/tests/data/https_proxy.golang.org/github.com_adam-hanna_array!operations_@v_v1.0.1-!r!c1.zip b/swh/loader/package/golang/tests/data/https_proxy.golang.org/github.com_adam-hanna_array!operations_@v_v1.0.1-!r!c1.zip new file mode 120000 index 00000000..d8b9df28 --- /dev/null +++ b/swh/loader/package/golang/tests/data/https_proxy.golang.org/github.com_adam-hanna_array!operations_@v_v1.0.1-!r!c1.zip @@ -0,0 +1 @@ +github.com_adam-hanna_array!operations_@v_v1.0.1.zip \ No newline at end of file diff --git a/swh/loader/package/golang/tests/test_golang.py b/swh/loader/package/golang/tests/test_golang.py index 5888d9b2..e19864a9 100644 --- a/swh/loader/package/golang/tests/test_golang.py +++ b/swh/loader/package/golang/tests/test_golang.py @@ -13,13 +13,18 @@ def test_golang_loader_first_visit(swh_storage, requests_mock_datadir): assert loader.load()["status"] == "eventful" -def test_golang_loader_package_name_with_uppercase_characters( +def test_golang_loader_package_or_version_name_with_uppercase_characters( swh_storage, requests_mock_datadir ): url = "https://pkg.go.dev/github.com/adam-hanna/arrayOperations" loader = GolangLoader(swh_storage, url) assert loader.load()["status"] == "eventful" + assert set(loader.last_snapshot().branches) == { + b"releases/v1.0.1", + b"releases/v1.0.1-RC1", + b"HEAD", + } def test_golang_loader_package_with_dev_version_only( -- GitLab