diff --git a/scripts/ci/materialize_base_python_requirements.py b/scripts/ci/materialize_base_python_requirements.py index 98cdad459..45d70ec0b 100755 --- a/scripts/ci/materialize_base_python_requirements.py +++ b/scripts/ci/materialize_base_python_requirements.py @@ -19,6 +19,7 @@ import sys import tarfile import tempfile +import urllib.error import urllib.parse import urllib.request from typing import Any @@ -65,8 +66,14 @@ def redirect_request( new_url: str, ) -> None: """Fail closed for all redirect status codes and target locations.""" - del request, response, code, message, headers, new_url - raise RuntimeError("trusted uv archive redirects are forbidden") + del message, new_url + raise urllib.error.HTTPError( + request.full_url, # type: ignore + code, + "trusted uv archive redirects are forbidden", + headers, + response, + ) @functools.cache diff --git a/tests/test_uv_redirect_boundary.py b/tests/test_uv_redirect_boundary.py index fd98592e8..be36f0bc7 100644 --- a/tests/test_uv_redirect_boundary.py +++ b/tests/test_uv_redirect_boundary.py @@ -2,6 +2,7 @@ from __future__ import annotations +import urllib.error import urllib.request from collections.abc import Iterator @@ -23,7 +24,7 @@ def test_trusted_uv_redirect_handler_rejects_before_following() -> None: handler = materializer._RejectTrustedUvRedirects() original = urllib.request.Request(materializer.TRUSTED_UV_ARCHIVE_URL) - with pytest.raises(RuntimeError, match="redirects are forbidden"): + with pytest.raises(urllib.error.HTTPError, match="trusted uv archive redirects are forbidden"): handler.redirect_request( original, None,