mirror of https://github.com/python/cpython
Warn instead of crashing because of invalid path in MANIFEST.in (#8286).
sdist used to crash with a full traceback dump instead of printing a nice warning with the faulty line number.
This commit is contained in:
parent
cb18d077c6
commit
0f2dbf3645
|
@ -320,7 +320,10 @@ class sdist(Command):
|
||||||
|
|
||||||
try:
|
try:
|
||||||
self.filelist.process_template_line(line)
|
self.filelist.process_template_line(line)
|
||||||
except DistutilsTemplateError, 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,
|
self.warn("%s, line %d: %s" % (template.filename,
|
||||||
template.current_line,
|
template.current_line,
|
||||||
msg))
|
msg))
|
||||||
|
|
|
@ -29,6 +29,7 @@ from distutils.tests.test_config import PyPIRCCommandTestCase
|
||||||
from distutils.errors import DistutilsOptionError
|
from distutils.errors import DistutilsOptionError
|
||||||
from distutils.spawn import find_executable
|
from distutils.spawn import find_executable
|
||||||
from distutils.log import WARN
|
from distutils.log import WARN
|
||||||
|
from distutils.filelist import FileList
|
||||||
from distutils.archive_util import ARCHIVE_FORMATS
|
from distutils.archive_util import ARCHIVE_FORMATS
|
||||||
|
|
||||||
SETUP_PY = """
|
SETUP_PY = """
|
||||||
|
@ -272,7 +273,6 @@ class SDistTestCase(PyPIRCCommandTestCase):
|
||||||
self.assertEqual(len(output), num_formats)
|
self.assertEqual(len(output), num_formats)
|
||||||
|
|
||||||
def test_finalize_options(self):
|
def test_finalize_options(self):
|
||||||
|
|
||||||
dist, cmd = self.get_cmd()
|
dist, cmd = self.get_cmd()
|
||||||
cmd.finalize_options()
|
cmd.finalize_options()
|
||||||
|
|
||||||
|
@ -342,6 +342,32 @@ class SDistTestCase(PyPIRCCommandTestCase):
|
||||||
finally:
|
finally:
|
||||||
archive.close()
|
archive.close()
|
||||||
|
|
||||||
|
# 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, "requires zlib")
|
@unittest.skipUnless(zlib, "requires zlib")
|
||||||
def test_get_file_list(self):
|
def test_get_file_list(self):
|
||||||
# make sure MANIFEST is recalculated
|
# make sure MANIFEST is recalculated
|
||||||
|
|
|
@ -40,6 +40,9 @@ Core and Builtins
|
||||||
Library
|
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 #10946: The distutils commands bdist_dumb, bdist_wininst and bdist_msi
|
- Issue #10946: The distutils commands bdist_dumb, bdist_wininst and bdist_msi
|
||||||
now respect a --skip-build option given to bdist.
|
now respect a --skip-build option given to bdist.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue