mirror of
https://github.com/python/cpython.git
synced 2025-07-24 11:44:31 +00:00
Issue #21722: The distutils "upload" command now exits with a non-zero return code when uploading fails.
Patch by Martin Dengler.
This commit is contained in:
parent
845fd9aa44
commit
2e4d3b133a
4 changed files with 24 additions and 11 deletions
|
@ -6,6 +6,7 @@ from test.support import run_unittest
|
|||
from distutils.command import upload as upload_mod
|
||||
from distutils.command.upload import upload
|
||||
from distutils.core import Distribution
|
||||
from distutils.errors import DistutilsError
|
||||
from distutils.log import INFO
|
||||
|
||||
from distutils.tests.test_config import PYPIRC, PyPIRCCommandTestCase
|
||||
|
@ -41,13 +42,14 @@ username:me
|
|||
|
||||
class FakeOpen(object):
|
||||
|
||||
def __init__(self, url):
|
||||
def __init__(self, url, msg=None, code=None):
|
||||
self.url = url
|
||||
if not isinstance(url, str):
|
||||
self.req = url
|
||||
else:
|
||||
self.req = None
|
||||
self.msg = 'OK'
|
||||
self.msg = msg or 'OK'
|
||||
self.code = code or 200
|
||||
|
||||
def getheader(self, name, default=None):
|
||||
return {
|
||||
|
@ -58,7 +60,7 @@ class FakeOpen(object):
|
|||
return b'xyzzy'
|
||||
|
||||
def getcode(self):
|
||||
return 200
|
||||
return self.code
|
||||
|
||||
|
||||
class uploadTestCase(PyPIRCCommandTestCase):
|
||||
|
@ -68,13 +70,15 @@ class uploadTestCase(PyPIRCCommandTestCase):
|
|||
self.old_open = upload_mod.urlopen
|
||||
upload_mod.urlopen = self._urlopen
|
||||
self.last_open = None
|
||||
self.next_msg = None
|
||||
self.next_code = None
|
||||
|
||||
def tearDown(self):
|
||||
upload_mod.urlopen = self.old_open
|
||||
super(uploadTestCase, self).tearDown()
|
||||
|
||||
def _urlopen(self, url):
|
||||
self.last_open = FakeOpen(url)
|
||||
self.last_open = FakeOpen(url, msg=self.next_msg, code=self.next_code)
|
||||
return self.last_open
|
||||
|
||||
def test_finalize_options(self):
|
||||
|
@ -135,6 +139,10 @@ class uploadTestCase(PyPIRCCommandTestCase):
|
|||
results = self.get_logs(INFO)
|
||||
self.assertIn('xyzzy\n', results[-1])
|
||||
|
||||
def test_upload_fails(self):
|
||||
self.next_msg = "Not Found"
|
||||
self.next_code = 404
|
||||
self.assertRaises(DistutilsError, self.test_upload)
|
||||
|
||||
def test_suite():
|
||||
return unittest.makeSuite(uploadTestCase)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue