Merge fix for #8286 from 3.2
This commit is contained in:
commit
564fbac7cd
|
@ -306,7 +306,10 @@ class sdist(Command):
|
|||
|
||||
try:
|
||||
self.filelist.process_template_line(line)
|
||||
except DistutilsTemplateError as msg:
|
||||
# the call above can raise a DistutilsTemplateError for
|
||||
# malformed lines, or a ValueError from the lower-level
|
||||
# convert_path function
|
||||
except (DistutilsTemplateError, ValueError) as msg:
|
||||
self.warn("%s, line %d: %s" % (template.filename,
|
||||
template.current_line,
|
||||
msg))
|
||||
|
|
|
@ -15,6 +15,7 @@ from distutils.tests.test_config import PyPIRCCommandTestCase
|
|||
from distutils.errors import DistutilsOptionError
|
||||
from distutils.spawn import find_executable
|
||||
from distutils.log import WARN
|
||||
from distutils.filelist import FileList
|
||||
from distutils.archive_util import ARCHIVE_FORMATS
|
||||
|
||||
SETUP_PY = """
|
||||
|
@ -78,9 +79,6 @@ class SDistTestCase(PyPIRCCommandTestCase):
|
|||
dist.include_package_data = True
|
||||
cmd = sdist(dist)
|
||||
cmd.dist_dir = 'dist'
|
||||
def _warn(*args):
|
||||
pass
|
||||
cmd.warn = _warn
|
||||
return dist, cmd
|
||||
|
||||
@unittest.skipUnless(ZLIB_SUPPORT, 'Need zlib support to run')
|
||||
|
@ -235,7 +233,8 @@ class SDistTestCase(PyPIRCCommandTestCase):
|
|||
# with the `check` subcommand
|
||||
cmd.ensure_finalized()
|
||||
cmd.run()
|
||||
warnings = self.get_logs(WARN)
|
||||
warnings = [msg for msg in self.get_logs(WARN) if
|
||||
msg.startswith('warning: check:')]
|
||||
self.assertEqual(len(warnings), 2)
|
||||
|
||||
# trying with a complete set of metadata
|
||||
|
@ -244,7 +243,8 @@ class SDistTestCase(PyPIRCCommandTestCase):
|
|||
cmd.ensure_finalized()
|
||||
cmd.metadata_check = 0
|
||||
cmd.run()
|
||||
warnings = self.get_logs(WARN)
|
||||
warnings = [msg for msg in self.get_logs(WARN) if
|
||||
msg.startswith('warning: check:')]
|
||||
self.assertEqual(len(warnings), 0)
|
||||
|
||||
def test_check_metadata_deprecated(self):
|
||||
|
@ -266,7 +266,6 @@ class SDistTestCase(PyPIRCCommandTestCase):
|
|||
self.assertEqual(len(output), num_formats)
|
||||
|
||||
def test_finalize_options(self):
|
||||
|
||||
dist, cmd = self.get_cmd()
|
||||
cmd.finalize_options()
|
||||
|
||||
|
@ -286,6 +285,32 @@ class SDistTestCase(PyPIRCCommandTestCase):
|
|||
cmd.formats = 'supazipa'
|
||||
self.assertRaises(DistutilsOptionError, cmd.finalize_options)
|
||||
|
||||
# the following tests make sure there is a nice error message instead
|
||||
# of a traceback when parsing an invalid manifest template
|
||||
|
||||
def _test_template(self, content):
|
||||
dist, cmd = self.get_cmd()
|
||||
os.chdir(self.tmp_dir)
|
||||
self.write_file('MANIFEST.in', content)
|
||||
cmd.ensure_finalized()
|
||||
cmd.filelist = FileList()
|
||||
cmd.read_template()
|
||||
warnings = self.get_logs(WARN)
|
||||
self.assertEqual(len(warnings), 1)
|
||||
|
||||
def test_invalid_template_unknown_command(self):
|
||||
self._test_template('taunt knights *')
|
||||
|
||||
def test_invalid_template_wrong_arguments(self):
|
||||
# this manifest command takes one argument
|
||||
self._test_template('prune')
|
||||
|
||||
@unittest.skipIf(os.name != 'nt', 'test relevant for Windows only')
|
||||
def test_invalid_template_wrong_path(self):
|
||||
# on Windows, trailing slashes are not allowed
|
||||
# this used to crash instead of raising a warning: #8286
|
||||
self._test_template('include examples/')
|
||||
|
||||
@unittest.skipUnless(ZLIB_SUPPORT, 'Need zlib support to run')
|
||||
def test_get_file_list(self):
|
||||
# make sure MANIFEST is recalculated
|
||||
|
|
|
@ -271,6 +271,9 @@ Core and Builtins
|
|||
Library
|
||||
-------
|
||||
|
||||
- Issue #8286: The distutils command sdist will print a warning message instead
|
||||
of crashing when an invalid path is given in the manifest template.
|
||||
|
||||
- Issue #12636: IDLE reads the coding cookie when executing a Python script.
|
||||
|
||||
- Issue #12494: On error, call(), check_call(), check_output() and
|
||||
|
|
Loading…
Reference in New Issue