Commit 3e42be10 by ObserverOfTime Committed by GitHub

publish: raise an error on redirects

Resolves: #3069
parent d1905045
......@@ -265,13 +265,24 @@ class Uploader:
allow_redirects=False,
headers={"Content-Type": monitor.content_type},
)
if dry_run or resp.ok:
if dry_run or 200 <= resp.status_code < 300:
bar.set_format(
" - Uploading <c1>{0}</c1> <fg=green>%percent%%</>".format(
file.name
)
)
bar.finish()
elif resp.status_code == 301:
if self._io.output.supports_ansi():
self._io.overwrite(
" - Uploading <c1>{0}</c1> <error>{1}</>".format(
file.name, "FAILED"
)
)
raise UploadError(
"Redirects are not supported. "
"Is the URL missing a trailing slash?"
)
except (requests.ConnectionError, requests.HTTPError) as e:
if self._io.output.supports_ansi():
self._io.overwrite(
......
......@@ -34,6 +34,18 @@ def test_uploader_properly_handles_403_errors(http):
assert "HTTP Error 403: Forbidden" == str(e.value)
def test_uploader_properly_handles_301_redirects(http):
http.register_uri(http.POST, "https://foo.com", status=301, body="Redirect")
uploader = Uploader(Factory().create_poetry(project("simple_project")), NullIO())
with pytest.raises(UploadError) as e:
uploader.upload("https://foo.com")
assert "Redirects are not supported. Is the URL missing a trailing slash?" == str(
e.value
)
def test_uploader_registers_for_appropriate_400_errors(mocker, http):
register = mocker.patch("poetry.publishing.uploader.Uploader._register")
http.register_uri(
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment