Issue #20045: Fix "setup.py register --list-classifiers".
This commit is contained in:
parent
492b9893e1
commit
716b7222e9
|
@ -5,6 +5,7 @@ Implements the Distutils 'register' command (register with the repository).
|
||||||
|
|
||||||
# created 2002/10/21, Richard Jones
|
# created 2002/10/21, Richard Jones
|
||||||
|
|
||||||
|
import cgi
|
||||||
import os, string, getpass
|
import os, string, getpass
|
||||||
import io
|
import io
|
||||||
import urllib.parse, urllib.request
|
import urllib.parse, urllib.request
|
||||||
|
@ -87,7 +88,9 @@ class register(PyPIRCCommand):
|
||||||
'''
|
'''
|
||||||
url = self.repository+'?:action=list_classifiers'
|
url = self.repository+'?:action=list_classifiers'
|
||||||
response = urllib.request.urlopen(url)
|
response = urllib.request.urlopen(url)
|
||||||
log.info(response.read())
|
content_type = response.getheader('content-type', 'text/plain')
|
||||||
|
encoding = cgi.parse_header(content_type)[1].get('charset', 'ascii')
|
||||||
|
log.info(response.read().decode(encoding))
|
||||||
|
|
||||||
def verify_metadata(self):
|
def verify_metadata(self):
|
||||||
''' Send the metadata to the package index server to be checked.
|
''' Send the metadata to the package index server to be checked.
|
||||||
|
|
|
@ -32,14 +32,15 @@ class LoggingSilencer(object):
|
||||||
def _log(self, level, msg, args):
|
def _log(self, level, msg, args):
|
||||||
if level not in (DEBUG, INFO, WARN, ERROR, FATAL):
|
if level not in (DEBUG, INFO, WARN, ERROR, FATAL):
|
||||||
raise ValueError('%s wrong log level' % str(level))
|
raise ValueError('%s wrong log level' % str(level))
|
||||||
|
if not isinstance(msg, str):
|
||||||
|
raise TypeError("msg should be str, not '%.200s'"
|
||||||
|
% (type(msg).__name__))
|
||||||
self.logs.append((level, msg, args))
|
self.logs.append((level, msg, args))
|
||||||
|
|
||||||
def get_logs(self, *levels):
|
def get_logs(self, *levels):
|
||||||
def _format(msg, args):
|
def _format(msg, args):
|
||||||
if len(args) == 0:
|
|
||||||
return msg
|
|
||||||
return msg % args
|
return msg % args
|
||||||
return [_format(msg, args) for level, msg, args
|
return [msg % args for level, msg, args
|
||||||
in self.logs if level in levels]
|
in self.logs if level in levels]
|
||||||
|
|
||||||
def clear_logs(self):
|
def clear_logs(self):
|
||||||
|
|
|
@ -10,6 +10,7 @@ from test.support import check_warnings, run_unittest
|
||||||
from distutils.command import register as register_module
|
from distutils.command import register as register_module
|
||||||
from distutils.command.register import register
|
from distutils.command.register import register
|
||||||
from distutils.errors import DistutilsSetupError
|
from distutils.errors import DistutilsSetupError
|
||||||
|
from distutils.log import INFO
|
||||||
|
|
||||||
from distutils.tests.test_config import PyPIRCCommandTestCase
|
from distutils.tests.test_config import PyPIRCCommandTestCase
|
||||||
|
|
||||||
|
@ -58,12 +59,18 @@ class FakeOpener(object):
|
||||||
def __call__(self, *args):
|
def __call__(self, *args):
|
||||||
return self
|
return self
|
||||||
|
|
||||||
def open(self, req):
|
def open(self, req, data=None, timeout=None):
|
||||||
self.reqs.append(req)
|
self.reqs.append(req)
|
||||||
return self
|
return self
|
||||||
|
|
||||||
def read(self):
|
def read(self):
|
||||||
return 'xxx'
|
return b'xxx'
|
||||||
|
|
||||||
|
def getheader(self, name, default=None):
|
||||||
|
return {
|
||||||
|
'content-type': 'text/plain; charset=utf-8',
|
||||||
|
}.get(name.lower(), default)
|
||||||
|
|
||||||
|
|
||||||
class RegisterTestCase(PyPIRCCommandTestCase):
|
class RegisterTestCase(PyPIRCCommandTestCase):
|
||||||
|
|
||||||
|
@ -285,6 +292,14 @@ class RegisterTestCase(PyPIRCCommandTestCase):
|
||||||
cmd.check_metadata()
|
cmd.check_metadata()
|
||||||
self.assertEqual(len(w.warnings), 1)
|
self.assertEqual(len(w.warnings), 1)
|
||||||
|
|
||||||
|
def test_list_classifiers(self):
|
||||||
|
cmd = self._get_cmd()
|
||||||
|
cmd.list_classifiers = 1
|
||||||
|
cmd.run()
|
||||||
|
results = self.get_logs(INFO)
|
||||||
|
self.assertEqual(results, ['running check', 'xxx'])
|
||||||
|
|
||||||
|
|
||||||
def test_suite():
|
def test_suite():
|
||||||
return unittest.makeSuite(RegisterTestCase)
|
return unittest.makeSuite(RegisterTestCase)
|
||||||
|
|
||||||
|
|
|
@ -29,6 +29,8 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #20045: Fix "setup.py register --list-classifiers".
|
||||||
|
|
||||||
- Issue #18879: When a method is looked up on a temporary file, avoid closing
|
- Issue #18879: When a method is looked up on a temporary file, avoid closing
|
||||||
the file before the method is possibly called.
|
the file before the method is possibly called.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue