diff --git a/Lib/distutils/command/register.py b/Lib/distutils/command/register.py index b49f86fe581..86343c8017b 100644 --- a/Lib/distutils/command/register.py +++ b/Lib/distutils/command/register.py @@ -296,9 +296,9 @@ Your selection [default 1]: ''', log.INFO) result = 500, str(e) else: if self.show_response: - data = result.read() + data = self._read_pypi_response(result) result = 200, 'OK' if self.show_response: - dashes = '-' * 75 - self.announce('%s%r%s' % (dashes, data, dashes)) + msg = '\n'.join(('-' * 75, data, '-' * 75)) + self.announce(msg, log.INFO) return result diff --git a/Lib/distutils/tests/test_register.py b/Lib/distutils/tests/test_register.py index 6180133994f..01acf2375f6 100644 --- a/Lib/distutils/tests/test_register.py +++ b/Lib/distutils/tests/test_register.py @@ -301,6 +301,20 @@ class RegisterTestCase(PyPIRCCommandTestCase): results = self.get_logs(INFO) self.assertEqual(results, ['running check', 'xxx']) + def test_show_response(self): + # test that the --show-response option return a well formatted response + cmd = self._get_cmd() + inputs = Inputs('1', 'tarek', 'y') + register_module.input = inputs.__call__ + cmd.show_response = 1 + try: + cmd.run() + finally: + del register_module.input + + results = self.get_logs(INFO) + self.assertEqual(results[3], 75 * '-' + '\nxxx\n' + 75 * '-') + def test_suite(): return unittest.makeSuite(RegisterTestCase) diff --git a/Lib/distutils/tests/test_upload.py b/Lib/distutils/tests/test_upload.py index 19193d5b05f..964aac7e800 100644 --- a/Lib/distutils/tests/test_upload.py +++ b/Lib/distutils/tests/test_upload.py @@ -140,7 +140,7 @@ class uploadTestCase(PyPIRCCommandTestCase): # The PyPI response body was echoed results = self.get_logs(INFO) - self.assertIn('xyzzy\n', results[-1]) + self.assertEqual(results[-1], 75 * '-' + '\nxyzzy\n' + 75 * '-') def test_upload_fails(self): self.next_msg = "Not Found" diff --git a/Misc/NEWS b/Misc/NEWS index 6de4c924dba..e8fd99068c5 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -139,6 +139,9 @@ Core and Builtins Library ------- +- Issue #20900: distutils register command now decodes HTTP responses + correctly. Initial patch by ingrid. + - A new version of typing.py provides several new classes and features: @overload outside stubs, Reversible, DefaultDict, Text, ContextManager, Type[], NewType(), TYPE_CHECKING, and numerous bug