Page MenuHomeSoftware Heritage

D6252.diff
No OneTemporary

D6252.diff

diff --git a/swh/loader/package/tests/test_utils.py b/swh/loader/package/tests/test_utils.py
--- a/swh/loader/package/tests/test_utils.py
+++ b/swh/loader/package/tests/test_utils.py
@@ -171,6 +171,33 @@
download(url, dest=str(tmp_path))
+@pytest.mark.fs
+def test_download_with_redirection(tmp_path, requests_mock):
+ """Download with redirection should use the targeted URL to extract filename"""
+ url = "https://example.org/project/requests/download"
+ filename = "requests-0.0.1.tar.gz"
+ redirection_url = f"https://example.org/project/requests/files/{filename}"
+ data = "this is something"
+
+ requests_mock.get(url, status_code=302, headers={"location": redirection_url})
+ requests_mock.get(
+ redirection_url, text=data, headers={"content-length": str(len(data))}
+ )
+
+ actual_filepath, actual_hashes = download(url, dest=str(tmp_path))
+
+ actual_filename = os.path.basename(actual_filepath)
+ assert actual_filename == filename
+ assert actual_hashes["length"] == len(data)
+ assert (
+ actual_hashes["checksums"]["sha1"] == "fdd1ce606a904b08c816ba84f3125f2af44d92b2"
+ ) # noqa
+ assert (
+ actual_hashes["checksums"]["sha256"]
+ == "1d9224378d77925d612c9f926eb9fb92850e6551def8328011b6a972323298d5"
+ )
+
+
def test_api_info_failure(requests_mock):
"""Failure to fetch info/release information should raise"""
url = "https://pypi.org/pypi/requests/json"
diff --git a/swh/loader/package/utils.py b/swh/loader/package/utils.py
--- a/swh/loader/package/utils.py
+++ b/swh/loader/package/utils.py
@@ -92,6 +92,9 @@
raise ValueError(
"Fail to query '%s'. Reason: %s" % (url, response.status_code)
)
+ # update URL to response one as requests follow redirection by default
+ # on GET requests
+ url = response.url
response_data = response.iter_content(chunk_size=HASH_BLOCK_SIZE)
filename = filename if filename else os.path.basename(url)

File Metadata

Mime Type
text/plain
Expires
Jul 3 2025, 9:13 AM (6 w, 2 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3225496

Event Timeline