mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 19:34:08 +00:00 
			
		
		
		
	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
							
								
									32e2915da5
								
							
						
					
					
						commit
						cfbd630a27
					
				
					 3 changed files with 34 additions and 2 deletions
				
			
		| 
						 | 
				
			
			@ -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 = """
 | 
			
		||||
| 
						 | 
				
			
			@ -265,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()
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -285,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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -28,6 +28,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 #10946: The distutils commands bdist_dumb, bdist_wininst and bdist_msi
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue